[Bug rtl-optimization/86108] [8/9 Regression] crash during unwinding with -O2
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 15 09:14:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86108
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The IL seems to be still correct in *.csa dump, where we have:
(code_label/s 1755 2240 1758 246 1802 (nil) [1 uses])
(note 1758 1755 1756 246 [bb 246] NOTE_INSN_BASIC_BLOCK)
(insn 1756 1758 1757 246 (set (reg:DI 41 r12 [469])
(reg:DI 0 ax)) 85 {*movdi_internal}
(expr_list:REG_DEAD (reg:DI 0 ax)
(nil)))
(insn 1757 1756 2081 246 (set (reg:DI 43 r14 [471])
(reg:DI 1 dx)) 85 {*movdi_internal}
(expr_list:REG_DEAD (reg:DI 1 dx)
(nil)))
(jump_insn/j 2081 1757 2082 246 (set (pc)
(label_ref 1284)) 683 {jump}
(nil)
...
(code_label 1284 2082 1285 247 1737 (nil) [1 uses])
(note 1285 1284 1286 247 [bb 247] NOTE_INSN_BASIC_BLOCK)
(insn 1286 1285 1287 247 (set (reg:DI 4 si)
(const_int 48 [0x30])) "pr86108.C":1553 85 {*movdi_internal}
(nil))
(insn 1287 1286 1288 247 (set (reg:DI 5 di)
(reg/f:DI 3 bx [orig:94 rLoad ] [94])) "pr86108.C":1553 85
{*movdi_internal}
(expr_list:REG_DEAD (reg/f:DI 3 bx [orig:94 rLoad ] [94])
(nil)))
(call_insn 1288 1287 1289 247 (call (mem:QI (symbol_ref:DI ("_ZdlPvm") [flags
0x41] <function_decl 0x7ff737519100 operator delete>) [0 operator de
(const_int 0 [0])) "pr86108.C":1553 689 {*call}
(expr_list:REG_DEAD (reg:DI 5 di)
(expr_list:REG_DEAD (reg:DI 4 si)
(expr_list:REG_CALL_DECL (symbol_ref:DI ("_ZdlPvm") [flags 0x41]
<function_decl 0x7ff737519100 operator delete>)
(expr_list:REG_EH_REGION (const_int 0 [0])
(nil)))))
(expr_list:DI (use (reg:DI 5 di))
(expr_list:DI (use (reg:DI 4 si))
(nil))))
(insn 1289 1288 1290 247 (set (reg:DI 0 ax [468])
(reg:DI 41 r12 [469])) 85 {*movdi_internal}
(expr_list:REG_DEAD (reg:DI 41 r12 [469])
(nil)))
(insn 1290 1289 2241 247 (set (reg:DI 1 dx [470])
(reg:DI 43 r14 [471])) 85 {*movdi_internal}
(expr_list:REG_DEAD (reg:DI 43 r14 [471])
(nil)))
(jump_insn 2241 1290 2242 247 (set (pc)
(label_ref 1443)) 683 {jump}
(nil)
-> 1443)
But *.jump2 breaks it by throwing away the saving/restoring of rax/rdx to/from
r12/r14, apparently during RTL fast DCE during that pass.
More information about the Gcc-bugs
mailing list