https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98531
--- Comment #9 from Rainer Orth <ro at gcc dot gnu.org> --- I've now managed to test your v2 patch, with mixed results: * On Solaris 11.4: the libstdc++ failures are gone the new tests PASS however, the old g++.dg/modules tests continue to ICE as before * On Solaris 11.3: the new tests ICE: FAIL: g++.dg/modules/pr98531_a.H -std=c++17 (internal compiler error) FAIL: g++.dg/modules/pr98531_a.H -std=c++17 (test for excess errors) FAIL: g++.dg/modules/pr98531_a.H -std=c++2a (internal compiler error) FAIL: g++.dg/modules/pr98531_a.H -std=c++2a (test for excess errors) FAIL: g++.dg/modules/pr98531_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/pr98531_a.H.gcm) FAIL: g++.dg/modules/pr98531_a.H module-cmi (gcm.cache/\$srcdir/g++.dg/modules/pr98531_a.H.gcm) FAIL: g++.dg/modules/pr98531_b.C -std=c++17 (test for excess errors) FAIL: g++.dg/modules/pr98531_b.C -std=c++2a (test for excess errors) Excess errors: /vol/gcc/src/hg/master/local/gcc/testsuite/g++.dg/modules/pr98531_a.H: internal compiler error: in tree_node, at cp/module.cc:9137 0xa218acd trees_out::tree_node(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:9137 0x8c4314e trees_out::core_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:6013 0x8c465cf trees_out::tree_node_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:7154 0x8c465cf trees_out::tree_value(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:8968 0x8c4259e trees_out::tree_node(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:9166 0x8c4314e trees_out::core_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:6013 0x8c465cf trees_out::tree_node_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:7154 0x8c465cf trees_out::tree_value(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:8968 0x8c4259e trees_out::tree_node(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:9166 0x8c4314e trees_out::core_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:6013 0x8c465cf trees_out::tree_node_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:7154 0x8c465cf trees_out::tree_value(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:8968 0x8c4259e trees_out::tree_node(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:9166 0x8c4314e trees_out::core_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:6013 0x8c465cf trees_out::tree_node_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:7154 0x8c465cf trees_out::tree_value(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:8968 0x8c4259e trees_out::tree_node(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:9166 0x8c4314e trees_out::core_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:6013 0x8c465cf trees_out::tree_node_vals(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:7154 0x8c465cf trees_out::tree_value(tree_node*) /vol/gcc/src/hg/master/local/gcc/cp/module.cc:8968 This seems to be exactly the same stacktrace as the one in the g++.dg/modules tests. I suspected that this is due to the fact that unlike Solaris 11.4, 11.3 doesn't have __cxa_atexit in libc, and indeed compiling on 11.3 with -fuse-cxa-atexit makes the ICE go away, while -fno-use-cxa-atexit on 11.4 causes it.