+++ This bug was initially created as a clone of Bug #1516576 +++ Description of problem: Whilst compiling ceph we encountered an ICE. I was able to reduce it to the following. Note this is different to the reproducer in the gcc bug report identified below but involves similarly nested classes. $ cat << EOF >reproducer.ii template <typename a> struct b { a c; }; template <typename d> struct e { d *operator->(); }; template <typename d> class f { public: typedef e<d> g; }; class h { protected: h(int); }; class j { public: virtual ~j(); struct k : h { int l; k() : h(l) { struct m : j { m() {} }; } }; }; struct n { n() { for (f<b<b<j *>>>::g i;;) delete i->c.c; } }; void o() { n(); } EOF $ g++ -c -O2 -g reproducer.ii reproducer.ii: In destructor ‘virtual j::k::k()::m::~m()’: reproducer.ii:17:14: internal compiler error: in force_type_die, at dwarf2out.c:25128 struct m : j { ^ Version-Release number of selected component (if applicable): gcc-7.2.1-2.fc27.x86_64 How reproducible: 100% Actual results: internal compiler error Expected results: Successful compile Additional info: This is the linked gcc bug 82155. Currently we are having to build with a gcc package including this patch which resolves the issue, https://github.com/gcc-mirror/gcc/commit/c7db9cf55ae4022f134624db81cc70d694079b6c Giving this high severity as it is adversely affecting the ceph build system.
Tests passed with devtoolset-7-gcc-7.3.1-5.4.el{6,7}. VERIFIED.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2018:1293