[Bug tree-optimization/69935] load not hoisted out of linked-list traversal loop
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 25 09:17:00 GMT 2016
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)
More information about the Gcc-bugs
mailing list