|
From: | hubicka at gcc dot gnu.org |
Subject: | [Bug ld/12944] New: GNU LD incorrectly optimize away COMDAT sections refered from data sections. |
Date: | Tue, 28 Jun 2011 12:59:36 +0000 |
http://sourceware.org/bugzilla/show_bug.cgi?id=12944 Summary: GNU LD incorrectly optimize away COMDAT sections refered from data sections. Product: binutils Version: 2.22 (HEAD) Status: NEW Severity: normal Priority: P2 Component: ld AssignedTo: address@hidden ReportedBy: address@hidden Compiling the following testcase: #include <stdio.h> #include "x.h" __attribute__ ((noinline)) void aa(class A *a) { a->test(); } __attribute__ ((noinline)) void bb(class B *b) { b->test(); } int main(void) { class A a; class B b; aa (&a); bb (&b); } with LTO and GNU LD: /abuild/jh/trunk-install/bin/g++ x.cc -O2 -flto -fuse-linker-plugin -flto-partition=none Leads to typeinfo being taken away by GNU LD: 00000000004005d2 W _ZTI1A 00000000004005d2 W _ZTI1B 00000000004005d2 W _ZTS1A 00000000004005d2 W _ZTS1B 0000000000400720 r _ZTV1A 0000000000400740 r _ZTV1B As one can verify the second pointers of _ZTV1A and _ZTV1B are equilvalent even though they should be different typeinfos: evans:/abuild/jh/dealIIb/:[0]# gdb a.out (gdb) p ((void **)0x400720)[0] $1 = (void *) 0x0 (gdb) p ((void **)0x400720)[1] $2 = (void *) 0x4005d2 (gdb) p ((void **)0x400720)[2] $3 = (void *) 0x4006f0 (gdb) p ((void **)0x400740)[0] $4 = (void *) 0x0 (gdb) p ((void **)0x400740)[1] $5 = (void *) 0x4005d2 (gdb) p ((void **)0x400740)[2] $6 = (void *) 0x4006e0 (gdb) Thinks works well with GOLD: 0000000000400720 V _ZTI1A 0000000000400700 V _ZTI1B 0000000000400730 V _ZTS1A 0000000000400710 V _ZTS1B 00000000004006c0 r _ZTV1A 00000000004006e0 r _ZTV1B (gdb) p ((void **)0x4006c0)[0] $1 = (void *) 0x0 (gdb) p ((void **)0x4006c0)[1] $2 = (void *) 0x400720 (gdb) p ((void **)0x4006c0)[2] $3 = (void *) 0x400590 (gdb) p ((void **)0x4006e0)[0] $4 = (void *) 0x0 (gdb) p ((void **)0x4006e0)[1] $5 = (void *) 0x400700 (gdb) p ((void **)0x4006e0)[2] $6 = (void *) 0x400580 This is what breaks DealII SPEC2k6 benchmark. Honza -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug.
[Prev in Thread] | Current Thread | [Next in Thread] |