Commit 35aebd56 by Richard Sandiford Committed by Richard Sandiford

function.h (regno_reg_rtx): Adjust comment.

gcc/
	* function.h (regno_reg_rtx): Adjust comment.
	* reginfo.c (init_reg_modes_target): Only use the previous mode
	if it fits within one register.  Remove MIPS comment.

From-SVN: r183773
parent 218e1228
2012-01-31 Richard Sandiford <rdsandiford@googlemail.com>
* function.h (regno_reg_rtx): Adjust comment.
* reginfo.c (init_reg_modes_target): Only use the previous mode
if it fits within one register. Remove MIPS comment.
2012-01-31 Jakub Jelinek <jakub@redhat.com> 2012-01-31 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/52058 PR bootstrap/52058
......
...@@ -87,10 +87,13 @@ struct GTY(()) emit_status { ...@@ -87,10 +87,13 @@ struct GTY(()) emit_status {
}; };
/* Indexed by pseudo register number, gives the rtx for that pseudo. /* Indexed by register number, gives an rtx for that register (and only
Allocated in parallel with regno_pointer_align. that register). For pseudo registers, it is the unique rtx for
FIXME: We could put it into emit_status struct, but gengtype is not able to deal that pseudo. For hard registers, it is an rtx of the mode specified
with length attribute nested in top level structures. */ by reg_raw_mode.
FIXME: We could put it into emit_status struct, but gengtype is not
able to deal with length attribute nested in top level structures. */
extern GTY ((length ("crtl->emit.x_reg_rtx_no"))) rtx * regno_reg_rtx; extern GTY ((length ("crtl->emit.x_reg_rtx_no"))) rtx * regno_reg_rtx;
......
...@@ -615,13 +615,15 @@ init_reg_modes_target (void) ...@@ -615,13 +615,15 @@ init_reg_modes_target (void)
{ {
reg_raw_mode[i] = choose_hard_reg_mode (i, 1, false); reg_raw_mode[i] = choose_hard_reg_mode (i, 1, false);
/* If we couldn't find a valid mode, just use the previous mode. /* If we couldn't find a valid mode, just use the previous mode
??? One situation in which we need to do this is on the mips where if it is suitable, otherwise fall back on word_mode. */
HARD_REGNO_NREGS (fpreg, [SD]Fmode) returns 2. Ideally we'd like
to use DF mode for the even registers and VOIDmode for the odd
(for the cpu models where the odd ones are inaccessible). */
if (reg_raw_mode[i] == VOIDmode) if (reg_raw_mode[i] == VOIDmode)
reg_raw_mode[i] = i == 0 ? word_mode : reg_raw_mode[i-1]; {
if (i > 0 && hard_regno_nregs[i][reg_raw_mode[i - 1]] == 1)
reg_raw_mode[i] = reg_raw_mode[i - 1];
else
reg_raw_mode[i] = word_mode;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment