On Mon, Mar 30, 2015 at 19:06:39 +0200, Jan Hubicka wrote: > > On Mon, Mar 30, 2015 at 05:02:57 +0200, Jan Hubicka wrote: > > > * lto-symtab.c (lto_symtab_merge_decls_2): Silence warnings on > > > artificial decls. > > > > Shouldn't this patch fix libgomp.c++/target-3.C in an offloading-enabled > > configuration? It still fails... > > > > libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: warning: type > > 'struct .omp_data_s.7' violates one definition rule [-Wodr] > > #pragma omp parallel for reduction(+:s) > > ^ > > #pragma omp parallel for reduction(+:s) > > ^ > > double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; > > ^ > > double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; > > ^ > > No, that is an different warning. Why those types are different? Is this a > full warning output?
Here is full output: spawn -ignore SIGHUP /gcc_build_host/gcc/xgcc -B/gcc_build_host/gcc/ /gcc/libgomp/testsuite/libgomp.c++/target-3.C -B/gcc_build_host/x86_64-pc-linux-gnu/./libgomp/ -B/gcc_build_host/x86_64-pc-linux-gnu/./libgomp/.libs -I/gcc_build_host/x86_64-pc-linux-gnu/./libgomp -I/gcc/libgomp/testsuite/../../include -I/gcc/libgomp/testsuite/.. -fmessage-length=0 -fno-diagnostics-show-caret -fdiagnostics-color=never -B/gcc_install/usr/local//libexec/gcc/x86_64-pc-linux-gnu/5.0.0 -B/gcc_install/usr/local//gcc -B/gcc_install/usr/local//bin -fopenmp -nostdinc++ -I/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu -I/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include -I/gcc/libstdc++-v3/libsupc++ -I/gcc/libstdc++-v3/include/backward -I/gcc/libstdc++-v3/testsuite/util -B/gcc_build_host/x86_64-pc-linux-gnu/./libgomp/../libstdc++-v3/src/.libs -L/gcc_build_host/x86_64-pc-linux-gnu/./libgomp/.libs -L/gcc_build_host/x86_64-pc-linux-gnu/./libgomp/../libstdc++-v3/src/.libs -lstdc++ -lm -o ./target-3.exe /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: warning: type 'struct .omp_data_s.7' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: note: a different type is defined in another translation unit #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:22:17: note: the first difference of corresponding definitions is field 'b.0' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:22:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:42:13: warning: type 'struct .omp_data_s.20' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:42:13: note: a different type is defined in another translation unit /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:37:17: note: the first difference of corresponding definitions is field 'b.14' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:37:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:60:10: warning: type 'struct .omp_data_s.38' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:60:10: note: a different type is defined in another translation unit /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:52:17: note: the first difference of corresponding definitions is field 'b.27' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:52:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds output is: /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: warning: type 'struct .omp_data_s.7' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: note: a different type is defined in another translation unit #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:22:17: note: the first difference of corresponding definitions is field 'b.0' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:22:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:42:13: warning: type 'struct .omp_data_s.20' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:42:13: note: a different type is defined in another translation unit /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:37:17: note: the first difference of corresponding definitions is field 'b.14' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:37:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:60:10: warning: type 'struct .omp_data_s.38' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:60:10: note: a different type is defined in another translation unit /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:52:17: note: the first difference of corresponding definitions is field 'b.27' double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:52:17: note: a field of same name but different type is defined in another translation unit double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ lto1: note: array types have different bounds FAIL: libgomp.c++/target-3.C (test for excess errors) Excess errors: /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:27:13: warning: type 'struct .omp_data_s.7' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ #pragma omp parallel for reduction(+:s) ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:42:13: warning: type 'struct .omp_data_s.20' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ /gcc/libgomp/testsuite/libgomp.c++/../libgomp.c/target-2.c:60:10: warning: type 'struct .omp_data_s.38' violates one definition rule [-Wodr] #pragma omp parallel for reduction(+:s) ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ double b[3 * x], c[3 * x], d[3 * x], e[3 * x]; ^ -- Ilya