diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2005-11-03 04:16:52 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2005-11-03 04:16:52 +0000 |
commit | ac746a73f02d1a83d0fb5df74326831566693c8d (patch) | |
tree | ed56432791befe845fb76a1ebcbce5dddc4211dc | |
parent | a92c58c27304547c9c75e4cbb0a2ad92f55c17e0 (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr24620.c | 27 |
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); +} + |