This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Unreachable code in reload.c
- From: Martin Koegler <e9925248 at stud4 dot tuwien dot ac dot at>
- To: gcc at gcc dot gnu dot org
- Date: Mon, 6 Dec 2004 22:38:01 +0100
- Subject: Unreachable code in reload.c
reload.c, function decompose, line 2355 (CVS HEAD version):
val.start = true_regnum (x);
if (val.start < 0)
{
/* A pseudo with no hard reg. */
val.start = REGNO (x);
val.end = val.start + 1;
}
else
/* A hard reg. */
val.end = val.start + hard_regno_nregs[val.start][GET_MODE (x)];
The then-part of the if statement can never be reached, because
true_regnum returns
* a register number, which is >0, if the x is an hard register.
* a register number >0, if x is a pseudo register and reg_renumber[REGNO(x)]>0
* else REGNO(x), which is >0
So the else case is used for every kind of register, which also means
that not renumbered pseudo registers cause an access over the array
bounds of hard_regno_nregs. (I don't know, if decompose can be called
with a pseudo-register).
mfg Martin Kögler
e9925248@stud4.tuwien.ac.at