diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8de34f21c4b..fc17cb4da43 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-11-03 Ulrich Weigand + + PR target/24620 + * config/s390/s390.md ("*insv_reg_imm"): Accept any CONST_INT + as operand 2. + ("*insv_reg_extimm"): Likewise. + 2005-11-03 Joseph S. Myers PR c/24329 diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index bc9e4c36262..4bf6d8a8854 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 393452736f0..e35fcef8b80 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-11-03 Ulrich Weigand + + PR target/24620 + * gcc.dg/pr24620.c: New test. + 2005-11-03 Joseph S. Myers PR c/24329 diff --git a/gcc/testsuite/gcc.dg/pr24620.c b/gcc/testsuite/gcc.dg/pr24620.c new file mode 100644 index 00000000000..926a524d46b --- /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); +} +