[PATCH] D67363: [BreakFalseDeps] ignore function with minsize attribute

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 10 08:16:59 PDT 2019


craig.topper added a comment.

In D67363#1664746 <https://reviews.llvm.org/D67363#1664746>, @spatel wrote:

> In D67363#1664689 <https://reviews.llvm.org/D67363#1664689>, @craig.topper wrote:
>
> > For VEX instructions don’t we just use the other input register to break the dependency without adding an instruction?
>
>
> That sounds right, but it's not controlled by this pass. That's part of memory op folding?
>  If I'm seeing it correctly, that's already more aggressively optimizing for size than what we're doing here:
>
>   // Avoid partial and undef register update stalls unless optimizing for size.
>   if (!MF.getFunction().hasOptSize() &&
>       (hasPartialRegUpdate(MI.getOpcode(), Subtarget, /*ForLoadFold*/true) ||
>        shouldPreventUndefRegUpdateMemFold(MF, MI)))
>     return nullptr;


We disable folding if it takes away our opportunity to use the other input register. But something still needs to pick a register for the implicit_def operand. I though that was this pass? I think in absense of this pass it may just be set to the xmm0 by the register allocator. Do we have tests where xmm0 isn't the right choice?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67363/new/

https://reviews.llvm.org/D67363





More information about the llvm-commits mailing list