aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2006-05-12 07:51:35 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2006-05-12 07:51:35 +0000
commit651a36e333ad720eaff2145132cbcbb29f4e1df4 (patch)
tree0ae713cef227524c87ed81b152718d17172898d2
parent66ec80f982c4774ba2bef326517d7ea982477704 (diff)
downloadgcc-651a36e333ad720eaff2145132cbcbb29f4e1df4.zip
gcc-651a36e333ad720eaff2145132cbcbb29f4e1df4.tar.gz
gcc-651a36e333ad720eaff2145132cbcbb29f4e1df4.tar.bz2
s390.c (s390_const_ok_for_constraint_p): Disallow -4G for On contraint.
2006-05-12 Andreas Krebbel <krebbel1@de.ibm.com> * config/s390/s390.c (s390_const_ok_for_constraint_p): Disallow -4G for On contraint. * config/s390/s390.md: Adjust comment describing On constraint. From-SVN: r113721
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c6
-rw-r--r--gcc/config/s390/s390.md2
3 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fff2191..e8f8d07 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-12 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/s390.c (s390_const_ok_for_constraint_p): Disallow -4G for
+ On contraint.
+ * config/s390/s390.md: Adjust comment describing On constraint.
+
2006-05-11 Jan Hubicka <jh@suse.cz>
* cgraphunit.c (decide_is_function_needed): Don't force always_inline
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index fdd4b5c..e55686d 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -2075,8 +2075,10 @@ s390_const_ok_for_constraint_p (HOST_WIDE_INT value,
|| s390_single_part (GEN_INT (value), DImode, SImode, 0) == 1;
case 'n':
- return value == -1
- || s390_single_part (GEN_INT (value), DImode, SImode, -1) == 1;
+ return
+ (value == -1
+ || s390_single_part (GEN_INT (value), DImode, SImode, -1) == 1)
+ && value != -((HOST_WIDE_INT)1 << 32);
default:
gcc_unreachable ();
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 54822da..6459c81 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -50,7 +50,7 @@
;; O -- Multiple letter constraint followed by 1 parameter.
;; s: Signed extended immediate value (-2G .. 2G-1).
;; p: Positive extended immediate value (0 .. 4G-1).
-;; n: Negative extended immediate value (-4G .. -1).
+;; n: Negative extended immediate value (-4G+1 .. -1).
;; These constraints do not accept any operand if the machine does
;; not provide the extended-immediate facility.
;; P -- Any integer constant that can be loaded without literal pool.