diff options
author | Jeff Law <jlaw@ventanamicro.com> | 2025-03-16 17:43:48 -0600 |
---|---|---|
committer | Jeff Law <jlaw@ventanamicro.com> | 2025-03-16 17:46:00 -0600 |
commit | 9d68a2a67351fc5b56262c0028ef8fd1d1466627 (patch) | |
tree | 4fa5a630de8e5ee15819e105fbbc6888b326fd8b /gcc/rust/util | |
parent | b2b139ddee763dd5fd71a3368e5e66399e3c52a3 (diff) | |
download | gcc-9d68a2a67351fc5b56262c0028ef8fd1d1466627.zip gcc-9d68a2a67351fc5b56262c0028ef8fd1d1466627.tar.gz gcc-9d68a2a67351fc5b56262c0028ef8fd1d1466627.tar.bz2 |
[RISC-V][PR target/116256][V4] Fix minor code quality regression in reassociated arithmetic
Arggh. This time add arguments for rv32. Hand edited the testcase part of the
patch, but I think I got it right.
One. More. Time.
-pedantic-errors this time ;( Adding an explicit -std=gnu23 to shut that up.
Part of me wants to know why that's getting added by the pre-commit, but not
enough to chase it down.
--
This failed pre-commit CI the first time through. The only change is in the
return type in the test bool -> _Bool.
The patch for target/116256 significantly simplified the condition and, I guess
not too surprisingly, exposed a minor code quality regression.
Specifically the split part of the define_insn_and_split only splits after
reload (because we use a match_scratch). So there's nothing to combine the
load-immediate with the subsequent add into an addi when the immediate fits
into a simm12 field.
This patch adjusts the split code to handle that scenario directly and generate
the more efficient code. We can squeeze out the slli in this test with a bit
more work, but that's out of scope right now since that isn't a regression.
Tested in my tester. Waiting on pre-commit testing to render a verdict.
PR target/116256
gcc
* config/riscv/riscv.md (reassociation splitters): Do not load the
adjusted addend into a register if it fits in a simm12.
gcc/testsuite
* gcc.target/riscv/pr116256-1.c: New test.
Diffstat (limited to 'gcc/rust/util')
0 files changed, 0 insertions, 0 deletions