aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2005-11-03 04:16:52 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2005-11-03 04:16:52 +0000
commitac746a73f02d1a83d0fb5df74326831566693c8d (patch)
treeed56432791befe845fb76a1ebcbce5dddc4211dc /gcc
parenta92c58c27304547c9c75e4cbb0a2ad92f55c17e0 (diff)
downloadgcc-ac746a73f02d1a83d0fb5df74326831566693c8d.zip
gcc-ac746a73f02d1a83d0fb5df74326831566693c8d.tar.gz
gcc-ac746a73f02d1a83d0fb5df74326831566693c8d.tar.bz2
re PR target/24620 (internal compiler error: in find_reloads, at reload.c:3730)
ChangeLog: PR target/24620 * config/s390/s390.md ("*insv<mode>_reg_imm"): Accept any CONST_INT as operand 2. ("*insv<mode>_reg_extimm"): Likewise. testsuite/ChangeLog: PR target/24620 * gcc.dg/pr24620.c: New test. From-SVN: r106422
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/s390/s390.md4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr24620.c27
4 files changed, 41 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8de34f2..fc17cb4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2005-11-03 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR target/24620
+ * config/s390/s390.md ("*insv<mode>_reg_imm"): Accept any CONST_INT
+ as operand 2.
+ ("*insv<mode>_reg_extimm"): Likewise.
+
2005-11-03 Joseph S. Myers <joseph@codesourcery.com>
PR c/24329
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index bc9e4c3..4bf6d8a 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -2598,7 +2598,7 @@
[(set (zero_extract:P (match_operand:P 0 "register_operand" "+d")
(const_int 16)
(match_operand 1 "const_int_operand" "n"))
- (match_operand:P 2 "const_int_operand" "K"))]
+ (match_operand 2 "const_int_operand" "n"))]
"TARGET_ZARCH
&& INTVAL (operands[1]) >= 0
&& INTVAL (operands[1]) < BITS_PER_WORD
@@ -2619,7 +2619,7 @@
[(set (zero_extract:P (match_operand:P 0 "register_operand" "+d")
(const_int 32)
(match_operand 1 "const_int_operand" "n"))
- (match_operand:P 2 "const_int_operand" "Os"))]
+ (match_operand 2 "const_int_operand" "n"))]
"TARGET_EXTIMM
&& INTVAL (operands[1]) >= 0
&& INTVAL (operands[1]) < BITS_PER_WORD
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3934527..e35fcef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-03 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR target/24620
+ * gcc.dg/pr24620.c: New test.
+
2005-11-03 Joseph S. Myers <joseph@codesourcery.com>
PR c/24329
diff --git a/gcc/testsuite/gcc.dg/pr24620.c b/gcc/testsuite/gcc.dg/pr24620.c
new file mode 100644
index 0000000..926a524
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr24620.c
@@ -0,0 +1,27 @@
+/* This used to ICE due to a backend problem on s390. */
+
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+struct rgba
+{
+ unsigned char r;
+ unsigned char g;
+ unsigned char b;
+ unsigned char a;
+};
+
+void g (struct rgba);
+
+void f (void)
+{
+ struct rgba x;
+
+ x.r = 0;
+ x.g = 128;
+ x.b = 128;
+ x.a = 26;
+
+ g (x);
+}
+