[LLVMdev] removing unnecessary ZEXT
robert at xmos.com
Fri Sep 6 09:18:51 PDT 2013
Within a basic block I can remove unnecessary register copies + zero sign extensions of unsigned-8bit-loaded values by implementing isZExtFree() for ISD::LOAD nodes.
...But not between basic blocks.
The first block does a CopyFromReg of the unsigned-8bit-loaded vreg1 into a new vreg2.
The second block then does a unnecessary zext to vreg2.
What I want is the 2nd block to use the original vreg1!
What I am getting is one extra register clobber and two extra instructions.
I have looked at other targets to see what they do but can't see what I am missing.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev