This adds support for placing predicateinfo such that it affects critical edges.
This fixes the issues mentioned by Nuno on the mailing list.
Depends on D29519
Paths
| Differential D29606
PredicateInfo: Handle critical edges ClosedPublic Authored by • dberlin on Feb 6 2017, 1:47 PM.
Details Summary This adds support for placing predicateinfo such that it affects critical edges. This fixes the issues mentioned by Nuno on the mailing list. Depends on D29519
Diff Detail
Event Timeline• dberlin added a child revision: D29747: PredicateInfo: Support switch statements.Feb 8 2017, 8:38 PM Comment Actions LGTM (modulo a comment). Nuno, What do you think?
This revision is now accepted and ready to land.Feb 12 2017, 12:28 PM Comment Actions Just to note, on the thread about this, Nuno said:
Comment Actions
Go for it then :) Closed by commit rL294921: PredicateInfo: Handle critical edges (authored by dannyb). · Explain WhyFeb 12 2017, 2:23 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 87515 include/llvm/Transforms/Utils/PredicateInfo.h
lib/Transforms/Utils/PredicateInfo.cpp
test/Transforms/Util/PredicateInfo/condprop.ll
test/Transforms/Util/PredicateInfo/diamond.ll
test/Transforms/Util/PredicateInfo/testandor.ll
|
So, in the case ABlockEdge == BBBlockEdge` you fall down and use Def/U to determine the ordering.
Unless I'm missing something, can't this be folded inside the std::tie() ? (sorry if I'm terribly mistaken here)