On 11/18/24 09:57, Jeff Law wrote:
And stage3 begins...

Zdenek's fuzzer caught this one.  Essentially using simplify_gen_subreg directly with an offset of 0 when we just needed a lowpart.

The offset of 0 works for little endian, but for big endian it's simply wrong.  simplify_gen_subreg will return NULL_RTX because the case isn't representable.  We then embed that NULL_RTX into an insn that's later scanned during mark_jump_label.

Scanning the port I see a couple more instances of this incorrect idiom.   One is pretty obvious to fix.  The others look a bit goofy and I'll probably need to sync with Patrick on them.

Anyway tested on riscv64-elf and riscv32-elf with no regressions. Pushing to the trunk.

jeff


Thanks! Also in the big-endian space:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109933

I have a patch attached to that bug but never landed it since I didn't have a way to test it.

Patrick

Reply via email to