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: Problem with GP on IA64


    > Later, it gets a REG_EQUIV note for the MEM and is scheduled before 2697
    > since there is no reason to do otherwise.

    Boom.  Yes there is:

    > How is this supposed to work?

    deps->in_post_call_group_p is supposed to keep all post-call
    hard-register manipulation adjacent to the call insn by making
    the whole clump SCHED_GROUP_P.

But that doesn't work because when EH is in effect, the CALL_INSN ends
a basic block so the CALL_INSN and that move are in different basic
blocks so in_post_call_group_p doesn't see the move.

Here's the relevant portion of the .combine:

(call_insn 2695 2694 4413 (parallel[ 
            (set (reg:TI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("osint__read_library_info")) [0 S8 A64])
                    (const_int 2 [0x2])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) 216 {call_value_pic} (insn_list 2690 (insn_list 2692 (nil)))
    (expr_list:REG_UNUSED (reg:DI 320 b0)
        (expr_list:REG_DEAD (reg:SI 120 out0)
            (expr_list:REG_DEAD (reg:QI 121 out1)
                (expr_list:REG_DEAD (reg:DI 1 r1)
                    (expr_list:REG_UNUSED (reg:DI 320 b0)
                        (nil))))))
    (expr_list (use (reg:QI 121 out1))
        (expr_list (use (reg:SI 120 out0))
            (nil))))
;; End of basic block 125, registers live:
 0 [r0] 1 [r1] 8 [r8] 9 [r9] 12 [r12] 111 [loc79] 328 [sfp] 341 343 347 350 353 356 414 458 790 1104 1133 1134 1625 1691 1692 1693

;; Start of basic block 126, registers live: 0 [r0] 8 [r8] 9 [r9] 12 [r12] 111 [loc79] 328 [sfp] 341 343 347 350 353 356 414 458 790 1104 1133 1134 1625 1691 1692 1693
(note 4413 2695 2697 [bb 126] NOTE_INSN_BASIC_BLOCK)

(insn 2697 4413 2699 (set (reg:DI 1 r1)
        (reg:DI 458)) 6 {*movdi_internal} (nil)
    (expr_list:REG_DEAD (reg:DI 458)
        (nil)))


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