On 7/3/25 21:26, Jeff Law wrote:
>
> On 7/3/25 5:19 PM, Vineet Gupta wrote:
>> Provide a fallback alternaive register contraint for LRA in the light of
>> the tightened "Q" constraint. Cures the following ICE ...
>>
>> | gcc/testsuite/gcc.target/riscv/pr118241-b.cc:31:19: error: unable to
>> generate reloads for:
>> | 31 | void m() { a.l(); }
>> | | ^
>> |(insn 26 25 27 7 (prefetch (mem/f:DI (plus:DI (reg/f:DI 143 [ _5 ])
>> | (const_int 56 [0x38])) [5 _5->batch[6]+0 S8 A64])
>> | (const_int 0 [0])
>> | (const_int 3 [0x3]))
>> "gcc/testsuite/gcc.target/riscv/pr118241-b.cc":18:29 498 {prefetch}
>> | (expr_list:REG_DEAD (reg/f:DI 142 [ _5->batch[6] ])
>> | (nil)))
>> |during RTL pass: reload
>>
>> PR target/118241
>>
>> gcc/ChangeLog:
>>
>> * config/riscv/riscv.md (prefetch): Add alternative "r".
>>
>> gcc/testsuite/ChangeLog:
>>
>> * gcc.target/riscv/pr118241-b.cc: New test.
> Hmm. I'm a little surprised that's needed. But there's new rules in
> the era of LRA and define_constraint.
Yeah I was wondering why the fallback reg alternative is not already built-in.
Is that meant to catch bugs in the backends ?
> Note that you could have just used "Qr" as the constraint for the first
> operand rather than using a multi-alternative constraint. I don't think
> it hurts anything though.
I went with ur suggestion of minimal update.
Thx,
-Vineet