Fix recent rvv/base/spill testcase failures
he core issue is we're expecting the frame to have a constant size, but it doesn't. So when using the to_constant method we abort. The safest thing to do is to set no shrink-wrapping components when the frame size is not fixed. We might be able to do better later -- iff we know the offset to the GPRs/FPRs is fixed and fits into the appropriate number of bits. Bootstrapped and regression tested (C-only) on riscv64-linux-gnu. As expected, it fixes a bucketload of failures in rvv/base/spill-*.c. gcc/ * config/riscv/riscv.cc (riscv_get_separate_components): Do not do shrink-wrapping for a frame with a variable size.
This commit is contained in:
parent
e5cfb9cac1
commit
ca73d4c80e
1 changed files with 2 additions and 1 deletions
|
@ -5340,7 +5340,8 @@ riscv_get_separate_components (void)
|
|||
bitmap_clear (components);
|
||||
|
||||
if (riscv_use_save_libcall (&cfun->machine->frame)
|
||||
|| cfun->machine->interrupt_handler_p)
|
||||
|| cfun->machine->interrupt_handler_p
|
||||
|| !cfun->machine->frame.gp_sp_offset.is_constant ())
|
||||
return components;
|
||||
|
||||
offset = cfun->machine->frame.gp_sp_offset.to_constant ();
|
||||
|
|
Loading…
Add table
Reference in a new issue