https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63505
Bug ID: 63505 Summary: [4.8/4.9 Regression] ICE with -fdebug-types-section in should_move_die_to_comdat, at dwarf2out.c:6702 Product: gcc Version: 4.9.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: doko at gcc dot gnu.org this might be related to PR57664 and/or PR53860 (but the latter was closed), seen on today's 4.8 and 4.9 branches, but not on trunk. test case reduced from https://bugs.debian.org/764624 $ cat test.cc template <typename _Predicate> struct A { _Predicate _M_pred; template <typename _Iterator> bool operator()(_Iterator) { return _M_pred; } }; template <typename _Predicate> A<_Predicate> __pred_iter(_Predicate) {} class B { public: int begin(); int end(); }; template <typename _ForwardIterator, typename _Predicate> void __remove_if(_ForwardIterator, _Predicate p2) { _ForwardIterator __first; p2(__first); } template <typename _ForwardIterator, typename _Predicate> void remove_if(_ForwardIterator, _ForwardIterator p2, _Predicate p3) { __remove_if(p2, __pred_iter(p3)); } void tidy_container() { B env_container; if (false) remove_if(env_container.begin(), env_container.end(), [] {}); } $ g++ -std=gnu++0x -c -g -fdebug-types-section test.cc test.cc:27:1: internal compiler error: in should_move_die_to_comdat, at dwarf2out.c:6702 } ^ Please submit a full bug report, with preprocessed source if appropriate.