diff mbox

[2/n] OpenMP 4.0 offloading infrastructure: LTO streaming

Message ID 20141112143443.GB35267@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Kirill Yukhin Nov. 12, 2014, 2:34 p.m. UTC
On 12 Nov 15:09, Richard Biener wrote:
> On Wed, 12 Nov 2014, Kirill Yukhin wrote:
> 
> > Hello Richard,
> > On 12 Nov 10:23, Richard Biener wrote:
> > > On Wed, 5 Nov 2014, Ilya Verbin wrote:
> > > Yes please.
> > > 
> > > Please make sure that regular LTO bootstrap still works - LTO is
> > > only tested lightly in the testsuite.
> > 
> > Current main trunk fails to bootstrap w/ `bootstrap-lto':
> > git/gcc/configure --enable-languages=c,c++ --with-build-config=bootstrap-lto --with-fpmath=sse
> > 
> > /export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/xg++ -B/export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/export/users/kyukhin/gcc/git/gcc/libstdc++-v3/libsupc++ -L/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs   -g -O2 -flto=jobserver -frandom-seed=1 -DIN_GCC    -fno-exceptions -fno-rtti
>   -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1 c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-array-notation.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-cilkplus.o c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o i386-c.o glibc-c.o \
> >   cc1-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a    -lmpc -lmpfr -lgmp -rdynamic -ldl  -L../zlib -lz
> > /export/users/kyukhin/gcc/git/gcc/gcc/gcse.c:447:0: error: type ‘struct bb_data’ violates one definition rule [-Werror=odr]
> >  struct bb_data
> >  ^
> > /export/users/kyukhin/gcc/git/gcc/gcc/lra-lives.c:395:0: note: a different type is defined in another translation unit
> >  struct bb_data
> >  ^
> > /export/users/kyukhin/gcc/git/gcc/gcc/gcse.c:451:0: note: the first difference of corresponding definitions is field ‘max_reg_pressure’
> >    int max_reg_pressure[N_REG_CLASSES];
> >  ^
> > /export/users/kyukhin/gcc/git/gcc/gcc/lra-lives.c:398:0: note: a field with different name is defined in another translation unit
> >    basic_block bb;
> >  ^
> > lto1: all warnings being treated as errors
> > lto-wrapper: fatal error: /export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/xg++ returned 1 exit status
> > compilation terminated.
> > /usr/bin/ld: lto-wrapper failed
> > collect2: error: ld returned 1 exit status
> > make[3]: *** [cc1] Error 1
> > 
> > Is it known issue?
> > (or we are doing something wrong...)
> 
> Seems like Vlad introduced the conflicting type with
Okay, we're going to test our changes with patch in the bottom applied
both to kyukhin/gomp4-offload and trunk.

     * gcc/lra-lives.c (struct bb_data): Rename to ...
     (struct bb_data_pseudos): ... this.
     (initiate_live_solver): Update struct name.

Is it ok if lto-bootstrap pass?

--
Thanks, K

Comments

Richard Biener Nov. 12, 2014, 2:34 p.m. UTC | #1
On Wed, 12 Nov 2014, Kirill Yukhin wrote:

> On 12 Nov 15:09, Richard Biener wrote:
> > On Wed, 12 Nov 2014, Kirill Yukhin wrote:
> > 
> > > Hello Richard,
> > > On 12 Nov 10:23, Richard Biener wrote:
> > > > On Wed, 5 Nov 2014, Ilya Verbin wrote:
> > > > Yes please.
> > > > 
> > > > Please make sure that regular LTO bootstrap still works - LTO is
> > > > only tested lightly in the testsuite.
> > > 
> > > Current main trunk fails to bootstrap w/ `bootstrap-lto':
> > > git/gcc/configure --enable-languages=c,c++ --with-build-config=bootstrap-lto --with-fpmath=sse
> > > 
> > > /export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/xg++ -B/export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -nostdinc++ -B/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -B/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs  -I/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu  -I/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/include  -I/export/users/kyukhin/gcc/git/gcc/libstdc++-v3/libsupc++ -L/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs -L/export/users/kyukhin/gcc/build/build-x86_64-linux/prev-x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs   -g -O2 -flto=jobserver -frandom-seed=1 -DIN_GCC    -fno-exceptions -fno-
 rtti
> >   -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -static-libstdc++ -static-libgcc  -o cc1 c/c-lang.o c-family/stub-objc.o attribs.o c/c-errors.o c/c-decl.o c/c-typeck.o c/c-convert.o c/c-aux-info.o c/c-objc-common.o c/c-parser.o c/c-array-notation.o c-family/c-common.o c-family/c-cppbuiltin.o c-family/c-dump.o c-family/c-format.o c-family/c-gimplify.o c-family/c-lex.o c-family/c-omp.o c-family/c-opts.o c-family/c-pch.o c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o c-family/c-semantics.o c-family/c-ada-spec.o c-family/c-cilkplus.o c-family/array-notation-common.o c-family/cilk.o c-family/c-ubsan.o i386-c.o glibc-c.o \
> > >   cc1-checksum.o libbackend.a main.o tree-browser.o libcommon-target.a libcommon.a ../libcpp/libcpp.a ../libdecnumber/libdecnumber.a libcommon.a ../libcpp/libcpp.a   ../libbacktrace/.libs/libbacktrace.a ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a    -lmpc -lmpfr -lgmp -rdynamic -ldl  -L../zlib -lz
> > > /export/users/kyukhin/gcc/git/gcc/gcc/gcse.c:447:0: error: type ‘struct bb_data’ violates one definition rule [-Werror=odr]
> > >  struct bb_data
> > >  ^
> > > /export/users/kyukhin/gcc/git/gcc/gcc/lra-lives.c:395:0: note: a different type is defined in another translation unit
> > >  struct bb_data
> > >  ^
> > > /export/users/kyukhin/gcc/git/gcc/gcc/gcse.c:451:0: note: the first difference of corresponding definitions is field ‘max_reg_pressure’
> > >    int max_reg_pressure[N_REG_CLASSES];
> > >  ^
> > > /export/users/kyukhin/gcc/git/gcc/gcc/lra-lives.c:398:0: note: a field with different name is defined in another translation unit
> > >    basic_block bb;
> > >  ^
> > > lto1: all warnings being treated as errors
> > > lto-wrapper: fatal error: /export/users/kyukhin/gcc/build/build-x86_64-linux/./prev-gcc/xg++ returned 1 exit status
> > > compilation terminated.
> > > /usr/bin/ld: lto-wrapper failed
> > > collect2: error: ld returned 1 exit status
> > > make[3]: *** [cc1] Error 1
> > > 
> > > Is it known issue?
> > > (or we are doing something wrong...)
> > 
> > Seems like Vlad introduced the conflicting type with
> Okay, we're going to test our changes with patch in the bottom applied
> both to kyukhin/gomp4-offload and trunk.
> 
>      * gcc/lra-lives.c (struct bb_data): Rename to ...
>      (struct bb_data_pseudos): ... this.
>      (initiate_live_solver): Update struct name.
> 
> Is it ok if lto-bootstrap pass?

Ok.

Thanks,
Richard.

> --
> Thanks, K
> 
> diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c
> index 03def82..2c54ca70 100644
> --- a/gcc/lra-lives.c
> +++ b/gcc/lra-lives.c
> @@ -392,7 +392,7 @@ mark_regno_dead (int regno, machine_mode mode, int point, bool local_sets_p)
>  
>  /* Structure describing local BB data used for pseudo
>     live-analysis.  */
> -struct bb_data
> +struct bb_data_pseudos
>  {
>    /* Basic block about which the below data are.  */
>    basic_block bb;
> @@ -401,7 +401,7 @@ struct bb_data
>  };
>  
>  /* Array for all BB data.  Indexed by the corresponding BB index.  */
> -typedef struct bb_data *bb_data_t;
> +typedef struct bb_data_pseudos *bb_data_t;
>  
>  /* All basic block data are referred through the following array.  */
>  static bb_data_t bb_data;
> @@ -481,7 +481,7 @@ initiate_live_solver (void)
>    bitmap_initialize (&temp_bitmap, &reg_obstack);
>    bitmap_initialize (&all_hard_regs_bitmap, &reg_obstack);
>    bitmap_set_range (&all_hard_regs_bitmap, 0, FIRST_PSEUDO_REGISTER);
> -  bb_data = XNEWVEC (struct bb_data, last_basic_block_for_fn (cfun));
> +  bb_data = XNEWVEC (struct bb_data_pseudos, last_basic_block_for_fn (cfun));
>    bitmap_initialize (&all_blocks, &reg_obstack);
>  
>    basic_block bb;
> 
>
Ilya Verbin Nov. 12, 2014, 5:34 p.m. UTC | #2
On 12 Nov 15:34, Richard Biener wrote:
> > > Seems like Vlad introduced the conflicting type with
> > Okay, we're going to test our changes with patch in the bottom applied
> > both to kyukhin/gomp4-offload and trunk.
> > 
> >      * gcc/lra-lives.c (struct bb_data): Rename to ...
> >      (struct bb_data_pseudos): ... this.
> >      (initiate_live_solver): Update struct name.
> > 
> > Is it ok if lto-bootstrap pass?
> 
> Ok.

With this patch lto-bootstrap reached comparison stage and failed:

Comparing stages 2 and 3
Bootstrap comparison failure!
gcc/tree-sra.o differs
make[3]: *** [compare] Error 1

In objdump I see the difference only in .gnu.lto_.decls.1 section.
And this error occurs both on trunk and with our patches applied, so looks like
everything is ok?

Thanks,
  -- Ilya
Richard Biener Nov. 13, 2014, 8:42 a.m. UTC | #3
On Wed, 12 Nov 2014, Ilya Verbin wrote:

> On 12 Nov 15:34, Richard Biener wrote:
> > > > Seems like Vlad introduced the conflicting type with
> > > Okay, we're going to test our changes with patch in the bottom applied
> > > both to kyukhin/gomp4-offload and trunk.
> > > 
> > >      * gcc/lra-lives.c (struct bb_data): Rename to ...
> > >      (struct bb_data_pseudos): ... this.
> > >      (initiate_live_solver): Update struct name.
> > > 
> > > Is it ok if lto-bootstrap pass?
> > 
> > Ok.
> 
> With this patch lto-bootstrap reached comparison stage and failed:
> 
> Comparing stages 2 and 3
> Bootstrap comparison failure!
> gcc/tree-sra.o differs
> make[3]: *** [compare] Error 1
> 
> In objdump I see the difference only in .gnu.lto_.decls.1 section.
> And this error occurs both on trunk and with our patches applied, so looks like
> everything is ok?

Yeah, I think the above is already reported as -fcompare-debug fail.

Thanks,
Richard.
diff mbox

Patch

diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c
index 03def82..2c54ca70 100644
--- a/gcc/lra-lives.c
+++ b/gcc/lra-lives.c
@@ -392,7 +392,7 @@  mark_regno_dead (int regno, machine_mode mode, int point, bool local_sets_p)
 
 /* Structure describing local BB data used for pseudo
    live-analysis.  */
-struct bb_data
+struct bb_data_pseudos
 {
   /* Basic block about which the below data are.  */
   basic_block bb;
@@ -401,7 +401,7 @@  struct bb_data
 };
 
 /* Array for all BB data.  Indexed by the corresponding BB index.  */
-typedef struct bb_data *bb_data_t;
+typedef struct bb_data_pseudos *bb_data_t;
 
 /* All basic block data are referred through the following array.  */
 static bb_data_t bb_data;
@@ -481,7 +481,7 @@  initiate_live_solver (void)
   bitmap_initialize (&temp_bitmap, &reg_obstack);
   bitmap_initialize (&all_hard_regs_bitmap, &reg_obstack);
   bitmap_set_range (&all_hard_regs_bitmap, 0, FIRST_PSEUDO_REGISTER);
-  bb_data = XNEWVEC (struct bb_data, last_basic_block_for_fn (cfun));
+  bb_data = XNEWVEC (struct bb_data_pseudos, last_basic_block_for_fn (cfun));
   bitmap_initialize (&all_blocks, &reg_obstack);
 
   basic_block bb;