Hi!

On Wed, 18 Feb 2015 17:17:08 +0100, Jan Hubicka <hubi...@ucw.cz> wrote:
> looking across the ODR violation messages in libreoffice and Chromium I found
> some false positives and some confused messages.  This patch fixes them. In 
> partiuclar
>  - I introduced nasty vtable corruption when breaking out my type merging 
> patches,
>    so we ended up creating separate entries for each copy of type without 
> BINFO :(
>  - C++ now allows to use enum that has no fields defined. Those needs to 
> match enums
>    with fields from other unit
>  - class and vtable layout diffing got confused by presence of extra vptr 
> pointers
>    and bases. Fixed thus.
> 
> Bootstrapped/regtested x86_64-linux, comitted.

>       * ipa-devirt.c (odr_subtypes_equivalent_p): Fix formating.
>       (compare_virtual_tables): Be smarter about skipping typeinfos;
>       do sane output on virtual table table mismatch.
>       (warn_odr): Be ready for forward declarations of enums;
>       output sane info on base mismatch and virtual table mismatch.
>       (add_type_duplicate): Fix code choosing prevailing type; do not ICE
>       when only one type is polymorphic.
>       (get_odr_type): Fix hashtable corruption.
>       (dump_odr_type): Dump mangled names.

I find this commit, r220790, cause the following regression in an
offloading-enabled configuration:

    [-PASS:-]{+FAIL:+} libgomp.c++/target-3.C (test for excess errors)
    PASS: libgomp.c++/target-3.C execution test

    [...]/build-gcc/gcc/xgcc -B[...]/build-gcc/gcc/ 
[...]/source-gcc/libgomp/testsuite/libgomp.c++/target-3.C 
-B[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp/ 
-B[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp/.libs 
-I[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp 
-I[...]/source-gcc/libgomp/testsuite/../../include 
-I[...]/source-gcc/libgomp/testsuite/.. 
-I/usr/local/cuda-5.5/targets/x86_64-linux/include -fmessage-length=0 
-fno-diagnostics-show-caret -fdiagnostics-color=never 
-B[...]/install/offload-nvptx-none/libexec/gcc/x86_64-unknown-linux-gnu/5.0.0 
-B[...]/install/offload-nvptx-none/bin 
-B[...]/install/offload-x86_64-intelmicemul-linux-gnu/libexec/gcc/x86_64-unknown-linux-gnu/5.0.0
 -B[...]/install/offload-x86_64-intelmicemul-linux-gnu/bin -fopenmp -nostdinc++ 
-I[...]/build-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
 -I[...]/build-gcc/x86_64-unknown-linux-gnu/libstdc++-v3/include 
-I[...]/source-gcc/libstdc++-v3/libsupc++ 
-I[...]/source-gcc/libstdc++-v3/include/backward 
-I[...]/source-gcc/libstdc++-v3/testsuite/util 
-B[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp/../libstdc++-v3/src/.libs 
-L[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp/.libs 
-L[...]/build-gcc/x86_64-unknown-linux-gnu/./libgomp/../libstdc++-v3/src/.libs 
-lstdc++ -lm -o ./target-3.exe
    
[...]/source-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)
                 ^
    
[...]/source-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)
                 ^
    
[...]/source-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];
                     ^
    
[...]/source-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];
                     ^
    
[...]/source-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)
                 ^
    [...]


Grüße,
 Thomas

Attachment: signature.asc
Description: PGP signature

Reply via email to