[Bug target/37878] [4.4 regression] PPC64 ldu command generated with invalid offset
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Oct 21 09:56:00 GMT 2008
------- Comment #4 from jakub at gcc dot gnu dot org 2008-10-21 09:55 -------
I think this is rs6000_legitimate_address at fault here, it shouldn't say it is
valid memory address. In the:
if (GET_CODE (x) == PRE_MODIFY block in that function,
rs6000_legitimate_offset_address_p (mode, XEXP (x, 1), reg_ok_strict)
is true because:
3649 if (mode == DFmode || mode == DDmode || !TARGET_POWERPC64)
3650 extra = 4;
3651 else if (offset & 3)
3652 return false;
only checks the offset being multiple of 4 if not DFmode or DDmode. If that is
correct, I think rs6000_legitimate_address should in the PRE_MODIFY case
explicitly check that if offset is a constant that it is multiple of 4.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dje at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37878
More information about the Gcc-bugs
mailing list