http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48008
Summary: [4.6 Regression] libstdc++-v3/testsuite/20_util/function/43397.cc fails to assemble with -fabi-version=5 Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: zso...@seznam.cz I am not sure if this is a bug, but as there were commits to the ABI code, and the release is probably near, I opened this PR without more analysing... I am sorry if it renders invalid. This is the compiler output: $ g++ testcase2.C -std=c++0x -fabi-version=5 -c /tmp/cclBTCq8.s: Assembler messages: /tmp/cclBTCq8.s:314: Error: symbol `_ZSt6mem_fnIFiOiE3FooESt7_Mem_fnIMT0_T_ES6_' is already defined /tmp/cclBTCq8.s:352: Error: symbol `_ZSt6mem_fnIFiOiE3FooESt7_Mem_fnIMT0_T_ES6_' is already defined /tmp/cclBTCq8.s:390: Error: symbol `_ZSt6mem_fnIFiOiE3FooESt7_Mem_fnIMT0_T_ES6_' is already defined $ echo _ZSt6mem_fnIFiOiE3FooESt7_Mem_fnIMT0_T_ES6_ | c++filt std::_Mem_fn<int (Foo::*)(int&&)> std::mem_fn<int ()(int&&), Foo>(int (Foo::*)(int&&)) With -fabi-version=1 (or gcc 4.5), the following symbols are generated: $ echo _ZSt6mem_fnIFiOiE3FooESt7_Mem_fnIMT0_T_ES6_ | c++filt std::_Mem_fn<int (Foo::*)(int&&)> std::mem_fn<int ()(int&&), Foo>(int (Foo::*)(int&&)) $ echo _ZSt6mem_fnIKFiOiE3FooESt7_Mem_fnIMT0_T_ES7_ | c++filt std::_Mem_fn<int ( const Foo::*)(int&&)> std::mem_fn<int ( const)(int&&), Foo>(int ( const Foo::*)(int&&)) $ echo _ZSt6mem_fnIVFiOiE3FooESt7_Mem_fnIMT0_T_ES7_ | c++filt std::_Mem_fn<int ( volatile Foo::*)(int&&)> std::mem_fn<int ( volatile)(int&&), Foo>(int ( volatile Foo::*)(int&&)) $ echo _ZSt6mem_fnIVKFiOiE3FooESt7_Mem_fnIMT0_T_ES7_ | c++filt std::_Mem_fn<int ( const volatile Foo::*)(int&&)> std::mem_fn<int ( const volatile)(int&&), Foo>(int ( const volatile Foo::*)(int&&))