aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2001-08-08 17:02:56 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2001-08-08 17:02:56 +0000
commit82423cbad3a82b066e23d0c5aa569c24fc12cc66 (patch)
tree1ae536248be607b1c09449d754c668db933a2b0d /gcc
parent5755cd3808b7ffb637991e6537a69d1bdae4cffb (diff)
downloadgcc-82423cbad3a82b066e23d0c5aa569c24fc12cc66.zip
gcc-82423cbad3a82b066e23d0c5aa569c24fc12cc66.tar.gz
gcc-82423cbad3a82b066e23d0c5aa569c24fc12cc66.tar.bz2
* config/mips/mips.c (mips_legitimate_address_p): Limit "la" addresses.
From-SVN: r44721
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/mips/mips.c9
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 37852f3..c8e70c3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2001-08-07 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/mips/mips.c (mips_legitimate_address_p): Limit "la" addresses.
+
2001-08-08 Jason Merrill <jason_merrill@redhat.com>
* alias.c (get_alias_set): Return a previously calculated
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 7a2d962..a2caf2a 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -1364,9 +1364,12 @@ mips_legitimate_address_p (mode, xinsn, strict)
|| code1 != CONST
|| GET_CODE (XEXP (xplus1, 0)) != MINUS)
/* When assembling for machines with 64 bit registers,
- the assembler will not sign-extend the constant "foo"
- in "la x, foo(x)" */
- && (!TARGET_64BIT || (code1 == CONST_INT && INTVAL (xplus1) > 0))
+ the assembler will sign-extend the constant "foo"
+ in "la x, foo(x)" yielding the wrong result for:
+ (set (blah:DI) (plus x y)). */
+ && (!TARGET_64BIT
+ || trunc_int_for_mode (INTVAL (xplus1),
+ SImode) == INTVAL (xplus1))
&& !TARGET_MIPS16)
return 1;
}