summaryrefslogtreecommitdiff
path: root/gcc/config/s390
diff options
context:
space:
mode:
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-12 09:15:03 +0000
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-12 09:15:03 +0000
commit29847ec4952258319a397b4a567dc31f942aac5c (patch)
treea090d4114aac8d2473921064c1ad9e15cc3a093a /gcc/config/s390
parent2d1f9589a302bf6e28f4929a1a0a1e46af2a55f8 (diff)
downloadgcc-29847ec4952258319a397b4a567dc31f942aac5c.tar.gz
2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (s390_O_constraint_str): Limit the range for 'On' to -4G+1..-1. * config/s390/constraints.md: Adjust comment accordingly. 2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com> * gcc.target/s390/20071212-1.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130787 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390')
-rw-r--r--gcc/config/s390/constraints.md4
-rw-r--r--gcc/config/s390/s390.c3
2 files changed, 3 insertions, 4 deletions
diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md
index cdafa2fad31..92fd3254ca5 100644
--- a/gcc/config/s390/constraints.md
+++ b/gcc/config/s390/constraints.md
@@ -49,7 +49,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.
@@ -337,7 +337,7 @@
(define_constraint "On"
"@internal
- Negative extended immediate value (-4G .. -1).
+ Negative extended immediate value (-4G+1 .. -1).
This constraint will only match if the machine provides
the extended-immediate facility."
(and (match_code "const_int")
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index f7d80dbc01c..0b6d63bf019 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -2056,8 +2056,7 @@ s390_O_constraint_str (const char c, 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 s390_single_part (GEN_INT (value - 1), DImode, SImode, -1) == 1;
default:
gcc_unreachable ();