On 3/23/23 11:32 AM, Jeff Law via Gcc-patches wrote:
> On 3/23/23 10:29, Peter Bergner wrote:
>> I'm sorry that I don't know how REE works.  Why can't it optimize this?
>> I see in the REE dump:
>>
>> (insn 20 18 22 3 (set (reg:DI 4 4)
>>                        (zero_extend:DI (reg:QI 4 4 [orig:120 cD.3556+3 ] 
>> [120]))) "pr41742.c":6:41 8 {zero_extendqidi2} (nil))
>> (call_insn 22 20 41 3 (parallel [
>>              (set (reg:DI 3 3)
>>                   (call (mem:SI (symbol_ref:DI ("memset") [flags 0x41]  
>> <function_decl 0x7fff925f8400 __builtin_memset>) [0 memsetD.1196 S4 A8])
>>                      (const_int 64 [0x40])))
>>              (use (const_int 0 [0]))
>>              (clobber (reg:DI 96 lr)) ...
>>
>> Is there a reason why REE cannot see that our (reg:QI 4) is a param register
>> and thus due to our ABI, already correctly sign/zero extended?
>
> I don't think REE has ever considered exploiting ABI constraints. Handling
> that might be a notable improvement on various targets.  It'd be a great
> place to do some experimentation.

Ok, so sounds like a good follow-on project after this patch is reviewed
and committed (stage1).  Thanks for your input!

Peter

Reply via email to