summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJin Ma <jinma@linux.alibaba.com>2023-05-17 15:48:39 -0600
committerJeff Law <jlaw@ventanamicro.com>2023-05-17 15:48:39 -0600
commit6c6f96040a13e3403a418803cd9f539701c4c00e (patch)
tree934898b6d874a6b03087c2c51d94b528feb46da6
parent7b0073c6a4c21a558936c06a06ab1c6def9769ae (diff)
downloadgcc-6c6f96040a13e3403a418803cd9f539701c4c00e.tar.gz
Fix type error of 'switch (SUBREG_BYTE (op)).'
For example: (define_insn "mov_lowpart_sidi2" [(set (match_operand:SI 0 "register_operand" "=r") (subreg:SI (match_operand:DI 1 "register_operand" " r") 0))] "TARGET_64BIT" "mov\t%0,%1") (define_insn "mov_highpart_sidi2" [(set (match_operand:SI 0 "register_operand" "=r") (subreg:SI (match_operand:DI 1 "register_operand" " r") 1))] "TARGET_64BIT" "movh\t%0,%1") When defining the above patterns, the generated file insn-recog.cc will appear 'switch (SUBREG_BYTE (op))', but since the return value of SUBREG_BYTE is poly_uint16_pod, the following error will occur: "error: switch quantity not an integer". gcc/ChangeLog: * genrecog.cc (print_nonbool_test): Fix type error of switch (SUBREG_BYTE (op))'.
-rw-r--r--gcc/genrecog.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/genrecog.cc b/gcc/genrecog.cc
index 6dd375da5e3..04a5533ca4b 100644
--- a/gcc/genrecog.cc
+++ b/gcc/genrecog.cc
@@ -4619,6 +4619,7 @@ print_nonbool_test (output_state *os, const rtx_test &test)
printf ("SUBREG_BYTE (");
print_test_rtx (os, test);
printf (")");
+ printf (".to_constant ()");
break;
case rtx_test::WIDE_INT_FIELD: