Description of problem: I get assembler messages when trying to compile VNC with CC=gcc4 CXX=g++4. Version-Release number of selected component (if applicable): gcc4-4.0.0-0.27 How reproducible: 100% Steps to Reproduce: g++4 -c CConn.ii
Created attachment 111332 [details] CConn.ii
Simplified into: void bar (int); struct S { S (); virtual ~S (); }; struct T { virtual void foo (int) = 0; }; struct U : public S, public T { bool a; U () {} virtual ~U () {} virtual void foo (int x) { switch (x) { case 12: break; case 9: bar (7); break; case 10: bar (12); break; case 4: bar (18); break; case 2: bar (26); break; } } }; U u; which fails with g++4 -c 149469.C -m32 as well as -m64. Seems to be a GCC fault, which messed up COMDAT section names. there is a thunk in: .section .gnu.linkonce.t._ZN1U3fooEi,"axG",@progbits,_ZThn8_N1U3fooEi,comdat as well as start of _ZN1U3fooEi, then it switches temporarily to .section .gnu.linkonce.r._ZN1U3fooEi,"aG",@progbits,_ZN1U3fooEi,comdat section and the remainder of _ZN1U3fooEi is put into: .section .gnu.linkonce.t._ZN1U3fooEi,"axG",@progbits,_ZN1U3fooEi,comdat which is a different section from the one where the functions tarts (different COMDAT group).
Fixed in CVS, ought to appear in gcc-4.0.0-0.x hopefully tomorrow.