This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question on fixup_abnormal_edges


Jan Hubicka wrote:
> The caller save use chain->live_throughout that should contain
> proper values.  Unforutnately the code is somewhat messy as reload still
> use it's own liveness updating code instead of relying on what live.c
> have and there well may be some bug.  Can I see the relevant block in
> the .lreg dump? 

Sure. We see 347 live at the beginning and at the end. This is the one
assigned the hard reg 22, which save_call_clobbered_regs inserts a restore
insn for:

;; Start of basic block 50, 
;; registers live: 26 [$26] 29 [$29] 30 [$30] 31 [AP] 63 [FP] 155 347

(note 1464 437 2045 [bb 50] NOTE_INSN_BASIC_BLOCK)

(note 2045 1464 441 0x4054fc00 NOTE_INSN_BLOCK_END)

(insn 441 2045 443 (set (reg:DI 16 $16)
        (reg:DI 155)) 244 {*movdi_nofix} (nil)
    (expr_list:REG_DEAD (reg:DI 155)
        (nil)))

(insn 443 441 444 (set (reg:DI 25 $25)
        (const_int 1 [0x1])) 244 {*movdi_nofix} 
    (insn_list:REG_DEP_ANTI 441 (nil))
    (expr_list:REG_EQUAL (const_int 1 [0x1])
        (nil)))

(call_insn 444 443 445 (parallel[ 
            (call (mem:DI (symbol_ref:DI 
                ("ada__exceptions__reraise_occurrence_no_defer")) [0 S8 A64])
                (const_int 1 [0x1]))
            (use (const_int 0 [0x0]))
            (use (reg:DI 25 $25))
            (use (reg:DI 26 $26))
            (clobber (reg:DI 27 $27))
        ] ) 211 {*call_vms_1} (insn_list 443 (insn_list 441 (nil)))
    (expr_list:REG_DEAD (reg:DI 16 $16)
        (expr_list:REG_DEAD (reg:DI 26 $26)
            (expr_list:REG_DEAD (reg:DI 25 $25)
                (expr_list:REG_UNUSED (reg:DI 27 $27)
                    (expr_list:REG_EH_REGION (const_int 16 [0x10])
                        (expr_list:REG_NORETURN (const_int 0 [0x0])
                            (nil)))))))
    (expr_list (use (reg:DI 16 $16))
        (nil)))

;; End of basic block 50, registers live:
29 [$29] 30 [$30] 31 [AP] 63 [FP] 347


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]