extern void abort (void); int main () { __float128 f = 0.0; int i; #pragma omp parallel for reduction(+:f) for (i = 0; i < 128; i++) f++; if (f != 128.0Q) abort (); return 0; } ICEs with -fopenmp in 32-bit i686-linux cc1 (while works fine with x86_64-linux cc1 with -fopenmp -m32).
Created attachment 23973 [details] gcc46-pr48591.patch Untested fix.
Author: jakub Date: Wed Apr 13 15:50:02 2011 New Revision: 172379 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172379 Log: PR middle-end/48591 * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is NULL. (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL. * gcc.dg/gomp/pr48591.c: New test. * testsuite/libgomp.c/pr48591.c: New test. Added: trunk/gcc/testsuite/gcc.dg/gomp/pr48591.c trunk/libgomp/testsuite/libgomp.c/pr48591.c Modified: trunk/gcc/ChangeLog trunk/gcc/omp-low.c trunk/gcc/testsuite/ChangeLog trunk/libgomp/ChangeLog
Author: jakub Date: Wed Apr 13 15:52:17 2011 New Revision: 172381 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172381 Log: PR middle-end/48591 * omp-low.c (expand_omp_atomic_fetch_op): Return false if decl is NULL. (expand_omp_atomic_pipeline): Return false if cmpxchg is NULL. * gcc.dg/gomp/pr48591.c: New test. * testsuite/libgomp.c/pr48591.c: New test. Added: branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/gomp/pr48591.c branches/gcc-4_6-branch/libgomp/testsuite/libgomp.c/pr48591.c Modified: branches/gcc-4_6-branch/gcc/ChangeLog branches/gcc-4_6-branch/gcc/omp-low.c branches/gcc-4_6-branch/gcc/testsuite/ChangeLog branches/gcc-4_6-branch/libgomp/ChangeLog
Fixed for 4.6+.