This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
PowerPC assigning hard regs to things all of the sudden
- To: <gcc at gcc dot gnu dot org>
- Subject: PowerPC assigning hard regs to things all of the sudden
- From: Daniel Berlin <dan at www dot cgsoftware dot com>
- Date: Tue, 23 Jan 2001 17:07:51 -0500 (EST)
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