https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66487
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- The transformation is applied here: (gdb) p *current_pass $2 = {<pass_data> = {type = IPA_PASS, name = 0x1615fdd "pure-const", optinfo_flags = 0, tv_id = TV_IPA_PURE_CONST, properties_required = 0, properties_provided = 0, properties_destroyed = 0, todo_flags_start = 524288, todo_flags_finish = 0}, _vptr.opt_pass = 0x1601638 <vtable for (anonymous namespace)::pass_ipa_pure_const+16>, sub = 0x0, next = 0x1c01c50, static_pass_number = 78, graph_dump_initialized = false, m_ctxt = 0x1bbae40} (gdb) bt #0 walk_polymorphic_call_targets (before_inlining_p=<optimized out>, reachable=0x7fffffffcfc0, first=0x7fffffffcf80, edge=0x7fffcc09d068, reachable_call_targets=0x7fffffffd020) at ../../gcc/ipa.c:240 #1 symbol_table::remove_unreachable_nodes (this=0x7ffff68d10a8, file=0x0) at ../../gcc/ipa.c:421 #2 0x00000000005e724d in read_cgraph_and_symbols (fnames=<optimized out>, nfiles=<optimized out>) at ../../gcc/lto/lto.c:2939 #3 lto_main () at ../../gcc/lto/lto.c:3304 #4 0x000000000093a43f in compile_file () at ../../gcc/toplev.c:464 #5 0x00000000005beb81 in do_compile () at ../../gcc/toplev.c:1985 #6 toplev::main (this=this@entry=0x7fffffffd200, argc=1735, argc@entry=147, argv=0x1bbc390, argv@entry=0x7fffffffd308) at ../../gcc/toplev.c:2092 #7 0x00000000005c0da7 in main (argc=147, argv=0x7fffffffd308) at ../../gcc/main.c:39 (gdb) p *current_pass $3 = {<pass_data> = {type = IPA_PASS, name = 0x1615fdd "pure-const", optinfo_flags = 0, tv_id = TV_IPA_PURE_CONST, properties_required = 0, properties_provided = 0, properties_destroyed = 0, todo_flags_start = 524288, todo_flags_finish = 0}, _vptr.opt_pass = 0x1601638 <vtable for (anonymous namespace)::pass_ipa_pure_const+16>, sub = 0x0, next = 0x1c01c50, static_pass_number = 78, graph_dump_initialized = false, m_ctxt = 0x1bbae40}