s390.c (s390_O_constraint_str): Limit the range for 'On' to -4G+1..-1.
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. From-SVN: r130787
This commit is contained in:
parent
675575f57a
commit
ee3f344964
@ -1,3 +1,9 @@
|
||||
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-11 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_emit_prologue): Use frame_reg_rtx
|
||||
|
@ -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")
|
||||
|
@ -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 ();
|
||||
|
@ -1,3 +1,7 @@
|
||||
2007-12-12 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* gcc.target/s390/20071212-1.c: New testcase.
|
||||
|
||||
2007-12-11 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/34238
|
||||
|
11
gcc/testsuite/gcc.target/s390/20071212-1.c
Normal file
11
gcc/testsuite/gcc.target/s390/20071212-1.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* This used to fail due to bug in the On constraint causing a slgfi
|
||||
to be emitted with an immediate not fitting into 32bit. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -march=z9-109" } */
|
||||
|
||||
long
|
||||
foo (long a)
|
||||
{
|
||||
return a - (1ULL << 32);
|
||||
}
|
Loading…
Reference in New Issue
Block a user