Don't use s0 in Risc-V zcmp test compile#3076
Conversation
This file currently fails to compile with any compilers, resulting in `pico_riscv_gcc` always falling through to the non-zcmp arch string The fix is to change the registers used to `s1` and `s2` instead
|
ha; i was just making the same fix - but with said compiler i still didn't get any cm.push/pop etc. |
I think the Zcmp codegen itself has regressed in GCC. It looks like prolog/epilog scheduling can cause the push/pop pattern matching to fail (with no performance benefit from the scheduling). You should still get them, but they're rarer than they should be. Do you still get |
|
Is this also the fix for #3073 or is that a similar-but-different problem? |
Yes, that is this exact problem |
|
When I build with |
|
The Multi GCC run (https://github.com/raspberrypi/pico-sdk/actions/runs/29430965108/job/87405548355) has passed the RISC-V GCC 14.1.0 builds, so I think that means this is tested now and can be merged |
|
Is it "expected" for the CI to fail on the Pico W builds for GCC 6 and GCC 7? https://github.com/raspberrypi/pico-sdk/actions/runs/29430965108/job/87405548355 |
Yes, I think that's fixed in some way in multi-gcc-develop branch - ping @liamfraser |
This file currently fails to compile with any compilers, resulting in
pico_riscv_gccalways falling through to the non-zcmp arch stringThe fix is to change the registers used to
s1ands2instead