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
This commit is contained in:
Richard Sandiford 2012-01-31 19:11:00 +00:00 committed by Richard Sandiford
parent 218e1228c9
commit 35aebd5635
3 changed files with 21 additions and 10 deletions

View File

@ -1,3 +1,9 @@
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>
PR bootstrap/52058

View File

@ -87,10 +87,13 @@ struct GTY(()) emit_status {
};
/* Indexed by pseudo register number, gives the rtx for that pseudo.
Allocated in parallel with regno_pointer_align.
FIXME: We could put it into emit_status struct, but gengtype is not able to deal
with length attribute nested in top level structures. */
/* Indexed by register number, gives an rtx for that register (and only
that register). For pseudo registers, it is the unique rtx for
that pseudo. For hard registers, it is an rtx of the mode specified
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;

View File

@ -615,13 +615,15 @@ init_reg_modes_target (void)
{
reg_raw_mode[i] = choose_hard_reg_mode (i, 1, false);
/* 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
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 we couldn't find a valid mode, just use the previous mode
if it is suitable, otherwise fall back on word_mode. */
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;
}
}
}