------- Comment #9 from jason at gcc dot gnu dot org 2009-12-15 22:24 ------- It does seem kind of dodgy that IPA is modifying the types of functions directly, though...
Here's a non-C++0x testcase: struct X { void func() {} }; template<typename T, void (X::*P)() = &T::func> void b(T) {} int main() { b(X()); /* line 9 */ X().func(); return 0; } So, this could be fixed by 1) Not relying on function types being sensible once IPA begins. 1a) Generating names for debug info earlier 1b) Giving up on trying not to print default args in names for debug info 2) Keeping function types sensible. -- jason at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jamborm at gcc dot gnu dot | |org Summary|[c++0x] ICE with pointer-to-|ICE with pointer-to-member- |member-function decltype |function argument in |argument in template |template function |function | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42336