diff options
author | Jin Ma <jinma@linux.alibaba.com> | 2023-05-17 15:48:39 -0600 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2023-05-17 15:48:39 -0600 |
commit | 6c6f96040a13e3403a418803cd9f539701c4c00e (patch) | |
tree | 934898b6d874a6b03087c2c51d94b528feb46da6 | |
parent | 7b0073c6a4c21a558936c06a06ab1c6def9769ae (diff) | |
download | gcc-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.cc | 1 |
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: |