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

Reply via email to