https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106751
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- Reduced to: $ cat rtmutex_api.i struct task_struct *get_current(); struct task_struct { int __state; } __attribute____rt_mutex_slowlock_locked() { asm goto("" : : : : __label_warn_on); __builtin_unreachable(); __label_warn_on: while (1) get_current()->__state = 0; } $ ppc64-linux-gnu-gcc rtmutex_api.i -c -O2 during RTL pass: combine rtmutex_api.i: In function ‘__attribute____rt_mutex_slowlock_locked’: rtmutex_api.i:10:1: internal compiler error: in purge_dead_edges, at cfgrtl.cc:3347 10 | } | ^ 0x5e35b6 purge_dead_edges(basic_block_def*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64/build/gcc/cfgrtl.cc:3347 0x773947 purge_all_dead_edges() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64/build/gcc/cfgrtl.cc:3368 0x13dc33f combine_instructions /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64/build/gcc/combine.cc:1434 0x13dc33f rest_of_handle_combine /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64/build/gcc/combine.cc:14978 0x13dc33f execute /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-trunk-ppc64/build/gcc/combine.cc:15023 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.