[llvm-dev] Inline Spiller spilling multiple duplicate copies
Ryan Taylor via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 7 12:28:00 PST 2016
Looks like spillAroundUses is spilling multiple duplicate copies to the
stack, for example, with some regs we get 1 storeRegToStack call, for
others we get multiple (2-6+) and then these instructions are never
eliminated.
Looking at spillAroundUses it looks like multiple duplicate COPYs are being
generated, why? One for each use?
The reg_bundle holds these multiple copies so that we are iterating over
the same exact COPY instructions multiple times, even though each one hits
the same spot in the function:
if (hoistSpill(OldLI, MI)) {
MI->getOperand(0).setIsDead();
DeadDefs.push_back(MI);
continue;
}
Even when I add a check:
if (MI->getOperand(0)->isDead())
continue;
This never checks to true, on the second, third, fourth, etc duplicate.
Not sure what I'm missing? Can someone give me a brief description of why
these multiple COPYs are being written out (storeRegToStack is being
called)?
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160307/693b4198/attachment.html>
More information about the llvm-dev
mailing list