https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106776
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Before PRE [/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/stl_tree.h:1061:28] __position ={v} {CLOBBER(eol)}; [/app/example.cpp:25:62] _4 = [/app/example.cpp:25:10] &[/app/example.cpp:25:62] [/app/example.cpp:25:62] MEM[(struct pair *)SR.163_98 + 32B].second; [/app/example.cpp:14:23] _57 = MEM[(int *)_3]; [/app/example.cpp:14:21] _58 = _57 + -1; [/app/example.cpp:14:30] MEM[(int *)_3] = _58; [/app/example.cpp:14:17] if (_58 == 0) goto <bb 9>; [33.00%] else goto <bb 10>; [67.00%] <bb 9> [local count: 335388518]: MEM[(int *)_3] ={v} {CLOBBER}; [/app/example.cpp:14:45] operator delete (_3, 4); <bb 10> [local count: 1016328849]: [/opt/compiler-explorer/gcc-12.2.0/include/c++/12.2.0/bits/stl_pair.h:185:12] D.26938 ={v} {CLOBBER}; [/app/example.cpp:25:37] D.26938 ={v} {CLOBBER(eol)}; [/app/example.cpp:14:23] _54 = MEM[(int *)_3]; So it is not PRE causing the issue ... Look further back.