On 22 November 2017 at 09:44, Richard Biener <rguent...@suse.de> wrote: > > The following fixes if-conversion to free SCEV/niter estimates because > it DCEs stmts. > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > > Richard. > > 2017-11-22 Richard Biener <rguent...@suse.de> > > PR tree-optimization/83089 > * tree-if-conv.c (pass_if_conversion::execute): If anything > changed reset SCEV and free the number of iteration estimates. > > * gcc.dg/pr83089.c: New testcase. > > Index: gcc/tree-if-conv.c > =================================================================== > --- gcc/tree-if-conv.c (revision 254990) > +++ gcc/tree-if-conv.c (working copy) > @@ -2959,6 +2959,12 @@ pass_if_conversion::execute (function *f > && !loop->dont_vectorize)) > todo |= tree_if_conversion (loop); > > + if (todo) > + { > + free_numbers_of_iterations_estimates (fun); > + scev_reset (); > + } > + > if (flag_checking) > { > basic_block bb; > Index: gcc/testsuite/gcc.dg/pr83089.c > =================================================================== > --- gcc/testsuite/gcc.dg/pr83089.c (nonexistent) > +++ gcc/testsuite/gcc.dg/pr83089.c (working copy) > @@ -0,0 +1,27 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -ftree-loop-if-convert -ftree-parallelize-loops=2" } */ > + > +int rl, s8; > + > +void > +it (int zy, short int el) > +{ > + int hb; > + > + while (el != 0) > + { > + hb = el; > + for (rl = 0; rl < 200; ++rl) > + { > + for (s8 = 0; s8 < 2; ++s8) > + { > + } > + if (s8 < 3) > + zy = hb; > + if (hb == 0) > + ++s8; > + zy += (s8 != -1); > + } > + el = zy; > + } > +}
I see the new testcase failing to compile on bare-metal targets (aarch64-elf, arm-eabi): spawn -ignore SIGHUP /aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/gcc/xgcc -B/aci-gcc-fsf/builds/gcc-fsf-gccsrc/obj-aarch64-none-elf/gcc3/gcc/ /gcc/testsuite/gcc.dg/pr83089.c -fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -ftree-loop-if-convert -ftree-parallelize-loops=2 -S -specs=aem-ve.specs -o pr83089.s xgcc: error: unrecognized command line option '-pthread' compiler exited with status 1 FAIL: gcc.dg/pr83089.c (test for excess errors) Where does that -pthread come from?