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> 2012-01-31 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/52058 PR bootstrap/52058

View File

@ -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;

View File

@ -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;
}
} }
} }