https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119348
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization, ra Ever confirmed|0 |1 Last reconfirmed| |2025-03-18 Target Milestone|--- |15.0 Status|UNCONFIRMED |NEW Summary|risc-v vector tuple casting |[15 Regression] risc-v |optimization regression |vector tuple casting | |optimization regression --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Disabling late combine1 get the GCC 15 back for -Os. But this looks like a subreg register allocation issue: trying to combine definition of r151 in: 2: {r151:RVVM1x8SF=r153:RVVM1x8SF;clobber scratch;clobber scratch;clobber scratch;} REG_DEAD r153:RVVM1x8SF into: 16: r143:RVVM8SF#0=r151:RVVM1x8SF#0 successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 143 [ resultD.129176 ]) 0) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) 0)) 18: r144:RVVM8SF#[16,16]=r151:RVVM1x8SF#[16,16] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 144 [ resultD.129176 ]) [16, 16]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [16, 16])) 20: r145:RVVM8SF#[32,32]=r151:RVVM1x8SF#[32,32] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 145 [ resultD.129176 ]) [32, 32]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [32, 32])) 22: r146:RVVM8SF#[48,48]=r151:RVVM1x8SF#[48,48] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 146 [ resultD.129176 ]) [48, 48]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [48, 48])) 24: r147:RVVM8SF#[64,64]=r151:RVVM1x8SF#[64,64] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 147 [ resultD.129176 ]) [64, 64]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [64, 64])) 26: r148:RVVM8SF#[80,80]=r151:RVVM1x8SF#[80,80] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 148 [ resultD.129176 ]) [80, 80]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [80, 80])) 28: r149:RVVM8SF#[96,96]=r151:RVVM1x8SF#[96,96] successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 149 [ resultD.129176 ]) [96, 96]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [96, 96])) 30: r150:RVVM8SF#[112,112]=r151:RVVM1x8SF#[112,112] REG_DEAD r151:RVVM1x8SF successfully matched this instruction to *movrvvm1sf_whole: (set (subreg:RVVM1SF (reg/v:RVVM8SF 150 [ <retval> ]) [112, 112]) (subreg:RVVM1SF (reg:RVVM1x8SF 153 [ tupleD.129165 ]) [112, 112])) original cost = 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4, replacement cost = 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4; keeping replacement rescanning insn with uid = 16. rescanning insn with uid = 18. rescanning insn with uid = 20. rescanning insn with uid = 22. rescanning insn with uid = 24. rescanning insn with uid = 26. rescanning insn with uid = 28. rescanning insn with uid = 30. updating insn 30 in-place verify found no changes in insn with uid = 30. updating insn 28 in-place verify found no changes in insn with uid = 28. updating insn 26 in-place verify found no changes in insn with uid = 26. updating insn 24 in-place verify found no changes in insn with uid = 24. updating insn 22 in-place verify found no changes in insn with uid = 22. updating insn 20 in-place verify found no changes in insn with uid = 20. updating insn 18 in-place verify found no changes in insn with uid = 18. updating insn 16 in-place verify found no changes in insn with uid = 16. deleting insn 2 deleting insn with uid = 2.