Somewhere between mainline revision 151676 and 151704 I started getting several gomp failures which manifest as timeouts in the testsuite when using -fpic/-fPIC. Here are the differing testsuite results: Clean: http://gcc.gnu.org/ml/gcc-testresults/2009-09/msg01244.html FAIL: http://gcc.gnu.org/ml/gcc-testresults/2009-09/msg01344.html The new gomp failures with -fpic/-fPIC are: FAIL: g++.dg/gomp/pr37189.C (test for excess errors) FAIL: libgomp.c++/task-3.C -O0 (test for excess errors) FAIL: libgomp.c++/task-3.C -O1 (test for excess errors) FAIL: libgomp.c++/task-3.C -O2 (test for excess errors) FAIL: libgomp.c++/task-3.C -O3 -fomit-frame-pointer (test for excess errors) FAIL: libgomp.c++/task-3.C -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) FAIL: libgomp.c++/task-3.C -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) FAIL: libgomp.c++/task-3.C -O3 -g (test for excess errors) FAIL: libgomp.c++/task-3.C -Os (test for excess errors) FAIL: libgomp.c++/task-5.C -O0 (test for excess errors) FAIL: libgomp.c++/task-5.C -O1 (test for excess errors) FAIL: libgomp.c++/task-5.C -O2 (test for excess errors) FAIL: libgomp.c++/task-5.C -O3 -fomit-frame-pointer (test for excess errors) FAIL: libgomp.c++/task-5.C -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) FAIL: libgomp.c++/task-5.C -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) FAIL: libgomp.c++/task-5.C -O3 -g (test for excess errors) FAIL: libgomp.c++/task-5.C -Os (test for excess errors) FAIL: libgomp.c++/task-7.C -O0 (test for excess errors) FAIL: libgomp.c++/task-7.C -O1 (test for excess errors) FAIL: libgomp.c++/task-7.C -O2 (test for excess errors) FAIL: libgomp.c++/task-7.C -O3 -fomit-frame-pointer (test for excess errors) FAIL: libgomp.c++/task-7.C -O3 -fomit-frame-pointer -funroll-loops (test for excess errors) FAIL: libgomp.c++/task-7.C -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions (test for excess errors) FAIL: libgomp.c++/task-7.C -O3 -g (test for excess errors) FAIL: libgomp.c++/task-7.C -Os (test for excess errors)
To reproduce, target x86_64-unknown-linux-gnu and compile g++.dg/gomp/pr37189.C with: cc1plus -quiet -v pr37189.C -dumpbase pr37189.C -mtune=generic -auxbase pr37189 -version -fopenmp -fpic -o pr37189.s ------------------------------------------------ // PR c++/37189 // { dg-do compile } // { dg-options "-fopenmp" } struct S { S () {} S (S const &) {} }; struct T { S s; }; void bar (T &) { } int foo () { T t; #pragma omp task bar (t); }
Created attachment 18628 [details] gcc45-pr41429.patch Patch I'm going to bootstrap/regtest.
Subject: Bug 41429 Author: jakub Date: Tue Sep 22 06:42:26 2009 New Revision: 151966 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=151966 Log: PR middle-end/41429 * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for GIMPLE_EH_MUST_NOT_THROW cleanup. (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW. * g++.dg/gomp/pr41429.C: New test. Added: trunk/gcc/testsuite/g++.dg/gomp/pr41429.C Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-cfg.c
Fixed.