[LLVMdev] Unnecessary moves after sign-extension in 2-address target

Greg McGary greg at mcgary.org
Wed Apr 22 08:58:29 PDT 2009

Evan Cheng wrote:
>> The copies are necessary because TwoAddressInstructionPass commutes
>> the second add.  When I suppress the commute, the movs disappear and
>> the code became optimal.  It seems the two-address commuter is  
>> either buggy
>> or inherently short-sighted/simple-minded and paints itself into a  
>> corner.
>> How do you recommend I approach this problem?
> You can try to identify the problem in 2addr pass and try to provide  
> us with a patch. Or file a bugzilla with a reproducible test case.

OK.  I was really fishing for strategic direction: e.g., caveats with 
the heuristics/algorithms
we use now.  Of course, if such existed, I expect it would be present as 
comments, so it was
probably too much to hope for...  I'll see if I can get the x86 target 
to trip on this bug.  My
new port won't be suitable for a bug report, since it's an odd-ball 
proprietary CPU that will
probably never be distributed outside the company.


More information about the llvm-dev mailing list