https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82801
--- Comment #1 from Anthony Lee <awllee at gmail dot com> --- creduce reduces this to the below. However, I'm not sure this is the reason for the original ICE since the error goes away if one writes inline double B::m_fn1() const { ... } template<int> class A { public: A() {} }; class B { double m_fn1() const; }; __attribute__((always_inline, flatten)) double B::m_fn1() const { A<1> v; return 0.0; } int main() { }