Commit 1a23970d by David Edelsohn Committed by David Edelsohn

re PR target/34529 (Wrong code with altivec stores and offsets)

        PR target/34529
        * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
        Offset addresses are not valid for Altivec or paired float modes.

From-SVN: r131741
parent 7655e009
2008-01-22 David Edelsohn <edelsohn@gnu.org>
PR target/34529
* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
Offset addresses are not valid for Altivec or paired float modes.
2008-01-22 Jakub Jelinek <jakub@redhat.com> 2008-01-22 Jakub Jelinek <jakub@redhat.com>
PR c++/34607 PR c++/34607
......
...@@ -3365,19 +3365,17 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict) ...@@ -3365,19 +3365,17 @@ rs6000_legitimate_offset_address_p (enum machine_mode mode, rtx x, int strict)
case V4SFmode: case V4SFmode:
case V4SImode: case V4SImode:
/* AltiVec vector modes. Only reg+reg addressing is valid and /* AltiVec vector modes. Only reg+reg addressing is valid and
constant offset zero should not occur due to canonicalization. constant offset zero should not occur due to canonicalization. */
Allow any offset when not strict before reload. */ return false;
return !strict;
case V4HImode: case V4HImode:
case V2SImode: case V2SImode:
case V1DImode: case V1DImode:
case V2SFmode: case V2SFmode:
/* Paired vector modes. Only reg+reg addressing is valid and /* Paired vector modes. Only reg+reg addressing is valid and
constant offset zero should not occur due to canonicalization. constant offset zero should not occur due to canonicalization. */
Allow any offset when not strict before reload. */
if (TARGET_PAIRED_FLOAT) if (TARGET_PAIRED_FLOAT)
return !strict; return false;
/* SPE vector modes. */ /* SPE vector modes. */
return SPE_CONST_OFFSET_OK (offset); return SPE_CONST_OFFSET_OK (offset);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment