PowerPC assigning hard regs to things all of the sudden

Daniel Berlin dan@www.cgsoftware.com
Tue Jan 23 14:08:00 GMT 2001


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



More information about the Gcc mailing list