https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66334
Vladimir Makarov <vmakarov at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vmakarov at gcc dot gnu.org
--- Comment #7 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to H.J. Lu from comment #2)
> After IRA,
>
> (insn 34 33 35 5 (set (reg:SI 3 bx)
> (reg:SI 87)) 86 {*movsi_internal}
> (expr_list:REG_DEAD (reg:SI 87)
> (nil)))
> (call_insn 35 34 36 5 (call (mem:QI (symbol_ref:SI ("_Unwind_Resume") [flags
> 0x41] <function_decl 0x7f1f9f3005e8 __builtin_unwind_resume>) [0
> __builtin_unwind_resume S1 A8])
> (const_int 16 [0x10])) 649 {*call}
> (expr_list:REG_DEAD (reg:SI 3 bx)
> (expr_list:REG_CALL_DECL (symbol_ref:SI ("_Unwind_Resume") [flags
> 0x41] <function_decl 0x7f1f9f3005e8 __builtin_unwind_resume>)
> (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
> (expr_list:REG_NORETURN (const_int 0 [0])
> (nil)))))
> (expr_list (use (reg:SI 3 bx))
> (nil)))
>
> LRA removed:
>
> (insn 34 33 35 5 (set (reg:SI 3 bx)
> (reg:SI 87)) 86 {*movsi_internal}
> (expr_list:REG_DEAD (reg:SI 87)
> (nil)))
>
> LRA should recognize that BUILT_IN_UNWIND_RESUME and initialize EBX.
I've looked at this. Insn 34 is transformed into
ebx=ebx
as pseudo 87 gets ebx. At the very end. LRA removes the useless insn.
Therefore there is no insn setting ebx.
H.J., is it really a problem?