diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 5eee8e86b423bc3cb778087bed8ecdda6d2479c3..d0f233e016b2b7e782152ed9f7a7ea0115b9f065 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -9578,7 +9578,7 @@ (define_insn "*cmp_and_trap_unsigned_int<mode>" [(trap_if (match_operator 0 "s390_unsigned_integer_comparison" [(match_operand:GPR 1 "register_operand" "d,d,d") - (match_operand:GPR 2 "general_operand" "d,D,T")]) + (match_operand:GPR 2 "general_operand" "d,D,S")]) (const_int 0))] "TARGET_Z10" "@ diff --git a/gcc/testsuite/gcc.target/s390/pr104775.c b/gcc/testsuite/gcc.target/s390/pr104775.c new file mode 100644 index 0000000000000000000000000000000000000000..fd4258bb36f74ee28b6feb1ec3185e14a3462a6f --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/pr104775.c @@ -0,0 +1,14 @@ +/* PR target/104775 */ +/* { dg-do assemble { target s390_zEC12_hw } } */ +/* { dg-options "-O2 -march=zEC12" } */ + +long a[64]; +void bar (void); + +void +foo (int x, int y) +{ + if (x != a[y]) + bar (); + __builtin_trap (); +}