https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81308
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |uros at gcc dot gnu.org --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- In *.postreload we still have: (insn 27 110 111 3 (parallel [ (set (reg:SF 8 st [orig:89 _26 ] [89]) (float_truncate:SF (reg:DF 9 st(1) [116]))) (clobber (mem/c:SF (plus:SI (reg/f:SI 6 bp) (const_int -76 [0xffffffffffffffb4])) [0 S4 A32])) ]) "pr62079.C":50 160 {*truncdfsf_i387} (expr_list:REG_EH_REGION (const_int 12 [0xc]) (nil))) ;; succ: 10 [always (guessed)] (FALLTHRU) ;; 5 [never] count:0 (ABNORMAL,EH) Now, not sure why is that insn marked as REG_EH_REGION, is that because the truncation might throw on inexact etc. or because the memory access might throw? As the MEM is /c, I'd think the latter should not be the case. In any case, split2 splits this into: (insn 117 110 118 3 (set (mem/c:SF (plus:SI (reg/f:SI 6 bp) (const_int -76 [0xffffffffffffffb4])) [0 S4 A32]) (reg:SF 9 st(1))) "pr62079.C":50 127 {*movsf_internal} (nil)) (insn 118 117 111 3 (set (reg:SF 8 st [orig:89 _26 ] [89]) (mem/c:SF (plus:SI (reg/f:SI 6 bp) (const_int -76 [0xffffffffffffffb4])) [0 S4 A32])) "pr62079.C":50 127 {*movsf_internal} (nil)) which doesn't have any REG_EH_REGION notes and thus we basically need to clean up the EH edges, but don't do that.