Modifying other AbstractAttributes to use Liveness AA and skip dead instructions.
|676 ↗||(On Diff #211599)|
SmallPtrSetImpl<ReturnInst *> &
|639 ↗||(On Diff #211599)|
Do not modify UniqueRV and do return true to indicate this return value was handled and all is OK. The idea is, when dead then ignore the return value.
|675 ↗||(On Diff #211599)|
|715 ↗||(On Diff #211599)|
Move into a helper function.
- adding instruction-wise is Assumed/Known Dead checks. This resolves FIXME in TEST 2.
- addressing comments
It should be noted that there is still a problem in AAReturnedValues. I will have to do a debug build, which will take quiet a lot of time, to investigate further.
some comments, no major problem though.
|582 ↗||(On Diff #212298)|
Maybe move this as a member into AAIsDead with the argument beeing a ArrayRef<Instruction *> so we can reuse it
|592 ↗||(On Diff #212298)|
|767 ↗||(On Diff #212298)|
I'll commit these changes as a fix today.
|1252 ↗||(On Diff #212298)|
Let's move this logic into the checkForAllCallSites call so all users benefit.
|1587 ↗||(On Diff #212298)|
please add an assert (also above) to verify I (or BB) is in the AnchoredScope.
|1611 ↗||(On Diff #212298)|
return getKnown() && isAssumedDead(I)
to reduce duplication of logic.
|1709 ↗||(On Diff #212298)|
// At least one new instruction encountered.
|751 ↗||(On Diff #212298)|
Please keep these and add the additional attribute sets instead.
Almost there. I added a last set of comments, most minor.
Could you add one more test case:
internal function foo, called 2 times but one call site is dead. We want to derive something about foo from the call site.
|866 ↗||(On Diff #212595)|
Thanks for this generic version. Please add doxygen documentation as well.
|630 ↗||(On Diff #212595)|
If you want LivenessAA might not be available, check for null.
|702 ↗||(On Diff #212595)|
Test for nullptr.
|965 ↗||(On Diff #212595)|
Comments here and elsewhere say "blocks" but check instructions.
|1241 ↗||(On Diff #212595)|
Pass this as reference (as we always do in the Attributor).
|1714 ↗||(On Diff #212595)|
Nit: CS->getFunction() or CS.getInstruction()->getFunction()
|1718 ↗||(On Diff #212595)|
not return true but continue! Only this call site is OK if it is dead.
|64 ↗||(On Diff #212595)|
remove the comment.
One minor thing and one change request + test. Other than that, LGTM.
|1721 ↗||(On Diff #212787)|
Move the liveness stuff before the CallSite CS stuff. If the user is dead, it does not matter if it is a call site, a direct call site, etc., it is dead after all.
Also add a test for this please, e.g., pass the function pointer to a another unknown function or store it away but the instruction that does so is dead.
|1241 ↗||(On Diff #212595)|
Please pass this as a reference not pointer.