Silence merge warnings on artiical types

Ilya Verbin iverbin@gmail.com
Mon Mar 30 17:11:00 GMT 2015


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



More information about the Gcc-patches mailing list