mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-24 04:10:29 +08:00
caller-save.c (reg_save_code): After HARD_REGNO_MODE_OK check fails...
* caller-save.c (reg_save_code): After HARD_REGNO_MODE_OK check fails, assert that REG is a hard register number before using it as an index. From-SVN: r166434
This commit is contained in:
parent
f79e1b0f8d
commit
f57e2756ac
@ -1,3 +1,8 @@
|
||||
2010-11-08 Joern Rennecke <amylaar@spamcop.net>
|
||||
|
||||
* caller-save.c (reg_save_code): After HARD_REGNO_MODE_OK check fails,
|
||||
assert that REG is a hard register number before using it as an index.
|
||||
|
||||
2010-11-08 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR target/46208
|
||||
|
@ -116,11 +116,15 @@ reg_save_code (int reg, enum machine_mode mode)
|
||||
if (cached_reg_save_code[reg][mode])
|
||||
return cached_reg_save_code[reg][mode];
|
||||
if (!HARD_REGNO_MODE_OK (reg, mode))
|
||||
{
|
||||
cached_reg_save_code[reg][mode] = -1;
|
||||
cached_reg_restore_code[reg][mode] = -1;
|
||||
return -1;
|
||||
}
|
||||
{
|
||||
/* Depending on how HARD_REGNO_MODE_OK is defined, range propagation
|
||||
might deduce here that reg >= FIRST_PSEUDO_REGISTER. So the assert
|
||||
below silences a warning. */
|
||||
gcc_assert (reg < FIRST_PSEUDO_REGISTER);
|
||||
cached_reg_save_code[reg][mode] = -1;
|
||||
cached_reg_restore_code[reg][mode] = -1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Update the register number and modes of the register
|
||||
and memory operand. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user