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?