https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97303
Bug ID: 97303 Summary: ICE during GIMPLE pass: *rebuild_cgraph_edges Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: thekbrogamer at gmail dot com Target Milestone: --- Created attachment 49312 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49312&action=edit code causing ice On mingw32-g++ (MinGW.org Cross-GCC Build-20200531-1) 9.2.0 cross compiler when compiling the following snippet #include <stdio.h> #include <stdlib.h> class test0 { public: virtual ~test0() {} }; template<typename a> class test1 : public test0 { public: virtual bool doAnything() const = 0; }; class test3_internal { public: bool depart() { return true; } }; template<typename T> class test3 { public: typedef T element_type; explicit test3(T* ptr = NULL) {} ~test3() { depart(); } void reset(T* ptr = NULL) { depart(); } private: void depart() { if (link_.depart()) delete value_; } T* value_; test3_internal link_; }; int main() { using doesNotCompile = long unsigned int(__attribute__((stdcall))*)(void*); using type2 = test1<doesNotCompile>; // using compiles = long unsigned int(*)(void*); // using type2 = test1<compiles>; test3<const type2> test; test.reset(); return 0; } $ mingw32-g++ -S -masm=intel foo.cpp during GIMPLE pass: *rebuild_cgraph_edges foo.cpp: In member function 'void test3<T>::depart() [with T = const test1<long unsigned int (__attribute__((stdcall)) *)(void*)>]': foo.cpp:55:1: internal compiler error: Segmentation fault 55 | } | ^ 0xbc5ecf crash_signal ../../src/gcc-9.2.0/gcc/toplev.c:326 0x9f077b obj_type_ref_class(tree_node const*) ../../src/gcc-9.2.0/gcc/ipa-devirt.c:2026 0xe10556 virtual_method_call_p(tree_node const*) ../../src/gcc-9.2.0/gcc/tree.c:13009 0x8489d1 cgraph_node::create_indirect_edge(gcall*, int, profile_count, bool) ../../src/gcc-9.2.0/gcc/cgraph.c:968 0x84dd1a cgraph_edge::rebuild_edges() ../../src/gcc-9.2.0/gcc/cgraphbuild.c:421 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. whereas, with mingw32-g++ (MinGW.org cross-GCC-8.2.0-4) 8.2.0, it seems to compile cleanly.