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]

PowerPC assigning hard regs to things all of the sudden


I just noticed this afternoon that hard regs are being assigned to things
that don't need them.
This didn't happen two days ago, on the same code, and they are already
there by the first RTl dump.
I updated cvs this morning as usual, and noticed that we weren't trying to
coalesce any moves anymore in the new register allocator, which was odd,
since i hadn't touched that code, so i looked at the RTL, and low and
behold, a hard reg was being used all over the place.

Fer instance, look
; Function kernel

(note 2 0 3 NOTE_INSN_DELETED -1347440721)

(note 3 2 5 NOTE_INSN_FUNCTION_BEG -1347440721)

(note 5 3 15 0x30141420 NOTE_INSN_BLOCK_BEG -1347440721)

(insn 15 5 16 (set (reg:SI 83)
        (high:SI (symbol_ref:SI ("array")))) -1 (nil)
    (nil))

(insn 16 15 20 (set (reg/v/f:SI 82)
        (lo_sum:SI (reg:SI 83)
            (symbol_ref:SI ("array")))) -1 (nil)
    (nil))

(insn 20 16 21 (set (reg:SI 3 r3)
        (const_int 1 [0x1])) -1 (nil)
    (nil))

Err.
r3?
why?
It didn't used to be like this two days ago. and r3 isn't actually used
for anything that needs a hard reg (in fact, it's actually set to
something else in the next rtl instruction, etc).

Did someone change something?
The test cases i'm using come from nullstone, so i don't think i can
send in preprocessed source.
So before i went to try to make a test case and send to gcc-bugs, i'd see
if anyone knew what was up.

--Dan


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