This has been fixed in trunk. On Sun, Oct 3, 2021, 23:02 <ci_not...@linaro.org> wrote:
> [TCWG CI] Regression caused by gcc: [PR102546] X << Y being non-zero > implies X is also non-zero.: > commit 5f9ccf17de7f7581412c6bffd4a37beca9a79836 > Author: Aldy Hernandez <al...@redhat.com> > > [PR102546] X << Y being non-zero implies X is also non-zero. > > Results regressed to > # reset_artifacts: > -10 > # build_abe binutils: > -9 > # build_abe stage1: > -5 > # build_abe qemu: > -2 > # linux_n_obj: > 18603 > # First few build errors in logs: > # 00:01:53 arch/arm/vfp/vfpdouble.c:1206:1: internal compiler error: in > upper_bound, at value-range.h:531 > # 00:01:53 arch/arm/vfp/vfpsingle.c:1246:1: internal compiler error: in > upper_bound, at value-range.h:531 > # 00:01:53 make[2]: *** [scripts/Makefile.build:271: > arch/arm/vfp/vfpdouble.o] Error 1 > # 00:01:54 make[2]: *** [scripts/Makefile.build:271: > arch/arm/vfp/vfpsingle.o] Error 1 > # 00:01:55 make[1]: *** [scripts/Makefile.build:514: arch/arm/vfp] Error 2 > # 00:01:56 arch/arm/nwfpe/softfloat.c:3432:1: internal compiler error: in > upper_bound, at value-range.h:531 > # 00:01:57 make[2]: *** [scripts/Makefile.build:271: > arch/arm/nwfpe/softfloat.o] Error 1 > # 00:01:57 make[1]: *** [scripts/Makefile.build:514: arch/arm/nwfpe] Error > 2 > # 00:02:14 arch/arm/kernel/smp.c:857:1: internal compiler error: in > upper_bound, at value-range.h:531 > # 00:02:15 make[2]: *** [scripts/Makefile.build:271: > arch/arm/kernel/smp.o] Error 1 > > from > # reset_artifacts: > -10 > # build_abe binutils: > -9 > # build_abe stage1: > -5 > # build_abe qemu: > -2 > # linux_n_obj: > 19709 > # linux build successful: > all > > THIS IS THE END OF INTERESTING STUFF. BELOW ARE LINKS TO BUILDS, > REPRODUCTION INSTRUCTIONS, AND THE RAW COMMIT. > > This commit has regressed these CI configurations: > - tcwg_kernel/gnu-master-arm-stable-allyesconfig > > First_bad build: > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/build-5f9ccf17de7f7581412c6bffd4a37beca9a79836/ > Last_good build: > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/build-257d2890a769a8aa564d079170377e637e07acb1/ > Baseline build: > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/build-baseline/ > Even more details: > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/ > > Reproduce builds: > <cut> > mkdir investigate-gcc-5f9ccf17de7f7581412c6bffd4a37beca9a79836 > cd investigate-gcc-5f9ccf17de7f7581412c6bffd4a37beca9a79836 > > # Fetch scripts > git clone https://git.linaro.org/toolchain/jenkins-scripts > > # Fetch manifests and test.sh script > mkdir -p artifacts/manifests > curl -o artifacts/manifests/build-baseline.sh > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/manifests/build-baseline.sh > --fail > curl -o artifacts/manifests/build-parameters.sh > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/manifests/build-parameters.sh > --fail > curl -o artifacts/test.sh > https://ci.linaro.org/job/tcwg_kernel-gnu-bisect-gnu-master-arm-stable-allyesconfig/15/artifact/artifacts/test.sh > --fail > chmod +x artifacts/test.sh > > # Reproduce the baseline build (build all pre-requisites) > ./jenkins-scripts/tcwg_kernel-build.sh @@ > artifacts/manifests/build-baseline.sh > > # Save baseline build state (which is then restored in artifacts/test.sh) > mkdir -p ./bisect > rsync -a --del --delete-excluded --exclude /bisect/ --exclude /artifacts/ > --exclude /gcc/ ./ ./bisect/baseline/ > > cd gcc > > # Reproduce first_bad build > git checkout --detach 5f9ccf17de7f7581412c6bffd4a37beca9a79836 > ../artifacts/test.sh > > # Reproduce last_good build > git checkout --detach 257d2890a769a8aa564d079170377e637e07acb1 > ../artifacts/test.sh > > cd .. > </cut> > > Full commit (up to 1000 lines): > <cut> > commit 5f9ccf17de7f7581412c6bffd4a37beca9a79836 > Author: Aldy Hernandez <al...@redhat.com> > Date: Fri Oct 1 13:05:36 2021 +0200 > > [PR102546] X << Y being non-zero implies X is also non-zero. > > This patch teaches this to range-ops. > > Tested on x86-64 Linux. > > gcc/ChangeLog: > > PR tree-optimization/102546 > * range-op.cc (operator_lshift::op1_range): Teach range-ops > that > X << Y is non-zero implies X is also non-zero. > --- > gcc/range-op.cc | 18 ++++++++++++++---- > gcc/testsuite/gcc.dg/tree-ssa/pr102546.c | 23 +++++++++++++++++++++++ > 2 files changed, 37 insertions(+), 4 deletions(-) > > diff --git a/gcc/range-op.cc b/gcc/range-op.cc > index 5e37133026d..2baca4a197f 100644 > --- a/gcc/range-op.cc > +++ b/gcc/range-op.cc > @@ -2078,6 +2078,12 @@ operator_lshift::op1_range (irange &r, > relation_kind rel ATTRIBUTE_UNUSED) const > { > tree shift_amount; > + > + if (!lhs.contains_p (build_zero_cst (type))) > + r.set_nonzero (type); > + else > + r.set_varying (type); > + > if (op2.singleton_p (&shift_amount)) > { > wide_int shift = wi::to_wide (shift_amount); > @@ -2089,21 +2095,24 @@ operator_lshift::op1_range (irange &r, > return false; > if (shift == 0) > { > - r = lhs; > + r.intersect (lhs); > return true; > } > > // Work completely in unsigned mode to start. > tree utype = type; > + int_range_max tmp_range; > if (TYPE_SIGN (type) == SIGNED) > { > int_range_max tmp = lhs; > utype = unsigned_type_for (type); > range_cast (tmp, utype); > - op_rshift.fold_range (r, utype, tmp, op2); > + op_rshift.fold_range (tmp_range, utype, tmp, op2); > } > else > - op_rshift.fold_range (r, utype, lhs, op2); > + op_rshift.fold_range (tmp_range, utype, lhs, op2); > + > + r.intersect (tmp_range); > > // Start with ranges which can produce the LHS by right shifting the > // result by the shift amount. > @@ -2128,7 +2137,8 @@ operator_lshift::op1_range (irange &r, > range_cast (r, type); > return true; > } > - return false; > + > + return !r.varying_p (); > } > > bool > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > b/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > new file mode 100644 > index 00000000000..4bd98747732 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr102546.c > @@ -0,0 +1,23 @@ > +// { dg-do compile } > +// { dg-options "-O3 -fdump-tree-optimized" } > + > +static int a; > +static char b, c, d; > +void bar(void); > +void foo(void); > + > +int main() { > + int f = 0; > + for (; f <= 5; f++) { > + bar(); > + b = b && f; > + d = f << f; > + if (!(a >= d || f)) > + foo(); > + c = 1; > + for (; c; c = 0) > + ; > + } > +} > + > +// { dg-final { scan-tree-dump-not "foo" "optimized" } } > </cut> _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-toolchain