From: Andreas Krebbel Date: Mon, 31 Mar 2008 11:32:41 +0000 (+0000) Subject: s390.c (s390_O_constraint_str): Limit the range for 'On' to -4G+1..-1. X-Git-Tag: prereleases/gcc-4.2.4-rc1~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b63f6ca071cd35c0af9e137dd100a4ed16d5dace;p=thirdparty%2Fgcc.git s390.c (s390_O_constraint_str): Limit the range for 'On' to -4G+1..-1. 2008-03-31 Andreas Krebbel * config/s390/s390.c (s390_O_constraint_str): Limit the range for 'On' to -4G+1..-1. * config/s390/constraints.md: Adjust comment accordingly. From-SVN: r133752 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2307ea5538ea..f806fe3504c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-31 Andreas Krebbel + + * 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 Backport from mainline: diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md index cdafa2fad31f..92fd3254ca5a 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 10246e238db7..355f257a9198 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -2009,8 +2009,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 ();