[PATCH] D31188: [AntiDepBreaker] Use liveins as well in StartBlock

Tim Shen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 4 16:47:53 PDT 2017


timshen added a comment.

In https://reviews.llvm.org/D31188#718346, @MatzeB wrote:

> In https://reviews.llvm.org/D31188#714712, @echristo wrote:
>
> > Committed thusly:
> >
> > echristo at athyra ~/s/llvm> git svn dcommit
> >  Committing to https://llvm.org/svn/llvm-project/llvm/trunk ...
> >
> >   	M	lib/AsmParser/LLParser.cpp
> >   	M	lib/CodeGen/AggressiveAntiDepBreaker.cpp
> >   	M	lib/CodeGen/CriticalAntiDepBreaker.cpp
> >
> > Committed r299124
> >
> > and... here:
> >
> > echristo at athyra ~/s/llvm> git svn dcommit
> >  Committing to https://llvm.org/svn/llvm-project/llvm/trunk ...
> >
> >   	A	test/CodeGen/PowerPC/pristine-and-livein.mir
> >
> > Committed r299125
> >
> > *sigh*
>
>
> FWIW: I am pretty sure "getPristineRegs is not accurately considering shrink wrapping puts registers not saved in certain blocks." as mentioned in the commit message is not true! getPristineRegs() doesn't have to do that!


Sounds fair, but someone has to do it.

> I also don't understand the fix here: Adding live-in registers when the code here appears to be searching for live-out registers seem like an odd fix to me (I can see how it helps though as it will just mark more registers as occupied).

This is based on my inderstanding on "ideal liveins()" I mentioned in the bug:

  /* Returns all live-ins, including the unspilled callee-saved registers. */
  iterator_range<concat_iterator<...>> liveins();

The fix turns "Pristine.test(Reg)" into "getPristineRegs() &


https://reviews.llvm.org/D31188





More information about the llvm-commits mailing list