Commit 01b774ff by Kito Cheng

RISC-V: Fix ICE on riscv_gpr_save_operation_p [PR95683]

 - riscv_gpr_save_operation_p might try to match parallel on other
   patterns like inline asm pattern, and then it might trigger ther
   assertion checking there, so we could trun it into a early exit check.

gcc/ChangeLog:

	PR target/95683
	* config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove
	assertion and turn it into a early exit check.

gcc/testsuite/ChangeLog

	PR target/95683
	* gcc.target/riscv/pr95683.c: New.

(cherry picked from commit beaf12b49ae030505194cdcac18b5c8533a43921)
parent d009e1d3
......@@ -5126,7 +5126,10 @@ bool
riscv_gpr_save_operation_p (rtx op)
{
unsigned len = XVECLEN (op, 0);
gcc_assert (len <= ARRAY_SIZE (gpr_save_reg_order));
if (len > ARRAY_SIZE (gpr_save_reg_order))
return false;
for (unsigned i = 0; i < len; i++)
{
rtx elt = XVECEXP (op, 0, i);
......
/* PR target/95683 */
/* { dg-options "-Os" } */
/* { dg-do compile } */
void a() {
asm(""
:
:
: "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
"t4", "t5", "t6", "ra");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment