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

Richard Biener rguenther@suse.de
Wed Nov 12 14:23:00 GMT 2014


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

2014-11-09  Vladimir Makarov  <vmakarov@redhat.com>

        PR rtl-optimization/63620
        * lra-constraints.c (substitute_pseudo): Add prefix lra_ to the
        name.  Move to lra.c.  Make it external.
        (substitute_pseudo_within_insn): Ditto.
        (inherit_reload_reg, split_reg, remove_inheritance_pseudos): Use
        the new names.
        (undo_optional_reloads): Ditto.
        * lra-int.h (lra_dump_bitmap_with_title, lra_substitute_pseudo):
        New prototypes.
        (lra_substitute_pseudo_within_insn): Ditto.
        * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): New.
        (mark_regno_live): Add parameter.  Update bb_gen_pseudos.
        (mark_regno_dead): Add parameter.  Update bb_gen_pseudos and
        bb_killed_pseudos.
        (struct bb_data, bb_data_t, bb_data): New.
...

Richard.


More information about the Gcc-patches mailing list