+2008-03-31 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.
+
2008-03-25 Maxim Kuvyrkov <maxim@codesourcery.com>
Backport from mainline:
;; 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.
(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")
|| 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 ();