[Bug rtl-optimization/81308] [8 regression] ICE in calc_dfs_tree, at dominance.c:458
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 4 14:38:00 GMT 2017
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.
More information about the Gcc-bugs
mailing list