This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Bug in reload_cse_move2add()
- To: Joern Rennecke <amylaar at cambridge dot redhat dot com>
- Subject: Re: Bug in reload_cse_move2add()
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Wed, 17 Jan 2001 15:40:43 +0000
- cc: aoliva at redhat dot com (Alexandre Oliva), amylaar at redhat dot com (Joern Rennecke), rearnsha at arm dot com, rearnsha at buzzard dot freeserve dot co dot uk (Richard Earnshaw), gcc-patches at gcc dot gnu dot org, law at redhat dot com
- Organization: ARM Ltd.
- Reply-To: rearnsha at arm dot com
amylaar@cambridge.redhat.com said:
> A single register rtx can refer to multiple hard registers. E.g. on a
> target with BITS_PER_UNIT == 8 and UNITS_PER_WORD == 32, (reg:DI 0)
> usually refers to two hard regs.
Which is why move2add_note_stores has:
if (HARD_REGNO_NREGS (regno, mode) == 1 && GET_CODE (set) == SET
&& GET_CODE (SET_DEST (set)) != ZERO_EXTRACT
&& GET_CODE (SET_DEST (set)) != SIGN_EXTRACT
&& GET_CODE (SET_DEST (set)) != STRICT_LOW_PART)
{
...
}
else
{
unsigned int endregno = regno + HARD_REGNO_NREGS (regno, mode);
for (i = regno; i < endregno; i++)
/* Reset the information about this register. */
reg_set_luid[i] = 0;
}