https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69935

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
It FAILs

FAIL: gcc.dg/vect/vect-aggressive-1.c -flto -ffat-lto-objects 
scan-tree-dump-ti
mes vect "vectorized 1 loops" 1

because in

__attribute__ ((noinline)) int
foo (void)
{
  int i, res = 0;
#pragma omp simd safelen(8)
  for (i = 0; i < N; i++)
  {
    int t = a[i];
    if (c[i] != 0)
      if (t != 100 & t > 5)
        res += 1;
  }
  return res;
}

we now sink the load from a[i] into the if (c[i]...) which confuses
vectorization
or rather if-conversion:

t_5 = a[i_17];
tree could trap...

(yeah, it misses very basic support for checking index evolution, niter and
array bounds).

It also seems to miscompile the fortran FE somehow as I get loads of Fortran
testsuite FAILs of the sort

in gfc_format_decoder, at fortran/error.c:937^M
0x6346ae gfc_format_decoder^M
        /space/rguenther/src/svn/trunk/gcc/fortran/error.c:937^M
0x1346a88 pp_format(pretty_printer*, text_info*)^M
        /space/rguenther/src/svn/trunk/gcc/pretty-print.c:633^M
0x1342548 diagnostic_report_diagnostic(diagnostic_context*, diagnostic_info*)^M
        /space/rguenther/src/svn/trunk/gcc/diagnostic.c:825^M
0x634537 gfc_error^M
        /space/rguenther/src/svn/trunk/gcc/fortran/error.c:1279^M

(note the missing 'internal compiler error:') and

/space/rguenther/src/svn/trunk/gcc/testsuite/gfortran.dg/coarray/poly_run_3.f90:6:6:
Warning: Non-RECURSIVE procedure '__copy_MAIN___T' at (1) is possibly calling
itself recursively.  Declare it RECURSIVE or use '-frecursive'^M

FAIL: gfortran.dg/coarray/poly_run_3.f90 -fcoarray=single  -O2  -latomic (test
for excess errors)

Reply via email to