[Bug c++/42336] ICE with pointer-to-member-function argument in template function

jason at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Dec 15 22:25:00 GMT 2009



------- 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



More information about the Gcc-bugs mailing list