mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
[PredicateInfo] Fold PredicateWithCondition into PredicateBase (NFC).
Each concrete instance of a predicate has a condition (also noted in the original PredicateBase comment) and to me it seems like there is no clear benefit of having both PredicateBase and PredicateWithCondition and they can be folded together. Reviewers: nikic, efriedma Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D84089
This commit is contained in:
parent
8e3d4ca0bb
commit
85de6c0e87
@ -83,37 +83,31 @@ public:
|
||||
// predicates, this is different to OriginalOp which refers to the initial
|
||||
// operand.
|
||||
Value *RenamedOp;
|
||||
// The condition associated with this predicate.
|
||||
Value *Condition;
|
||||
|
||||
PredicateBase(const PredicateBase &) = delete;
|
||||
PredicateBase &operator=(const PredicateBase &) = delete;
|
||||
PredicateBase() = delete;
|
||||
virtual ~PredicateBase() = default;
|
||||
|
||||
protected:
|
||||
PredicateBase(PredicateType PT, Value *Op) : Type(PT), OriginalOp(Op) {}
|
||||
};
|
||||
|
||||
class PredicateWithCondition : public PredicateBase {
|
||||
public:
|
||||
Value *Condition;
|
||||
static bool classof(const PredicateBase *PB) {
|
||||
return PB->Type == PT_Assume || PB->Type == PT_Branch ||
|
||||
PB->Type == PT_Switch;
|
||||
}
|
||||
|
||||
protected:
|
||||
PredicateWithCondition(PredicateType PT, Value *Op, Value *Condition)
|
||||
: PredicateBase(PT, Op), Condition(Condition) {}
|
||||
PredicateBase(PredicateType PT, Value *Op, Value *Condition)
|
||||
: Type(PT), OriginalOp(Op), Condition(Condition) {}
|
||||
};
|
||||
|
||||
// Provides predicate information for assumes. Since assumes are always true,
|
||||
// we simply provide the assume instruction, so you can tell your relative
|
||||
// position to it.
|
||||
class PredicateAssume : public PredicateWithCondition {
|
||||
class PredicateAssume : public PredicateBase {
|
||||
public:
|
||||
IntrinsicInst *AssumeInst;
|
||||
PredicateAssume(Value *Op, IntrinsicInst *AssumeInst, Value *Condition)
|
||||
: PredicateWithCondition(PT_Assume, Op, Condition),
|
||||
AssumeInst(AssumeInst) {}
|
||||
: PredicateBase(PT_Assume, Op, Condition), AssumeInst(AssumeInst) {}
|
||||
PredicateAssume() = delete;
|
||||
static bool classof(const PredicateBase *PB) {
|
||||
return PB->Type == PT_Assume;
|
||||
@ -123,7 +117,7 @@ public:
|
||||
// Mixin class for edge predicates. The FROM block is the block where the
|
||||
// predicate originates, and the TO block is the block where the predicate is
|
||||
// valid.
|
||||
class PredicateWithEdge : public PredicateWithCondition {
|
||||
class PredicateWithEdge : public PredicateBase {
|
||||
public:
|
||||
BasicBlock *From;
|
||||
BasicBlock *To;
|
||||
@ -135,7 +129,7 @@ public:
|
||||
protected:
|
||||
PredicateWithEdge(PredicateType PType, Value *Op, BasicBlock *From,
|
||||
BasicBlock *To, Value *Cond)
|
||||
: PredicateWithCondition(PType, Op, Cond), From(From), To(To) {}
|
||||
: PredicateBase(PType, Op, Cond), From(From), To(To) {}
|
||||
};
|
||||
|
||||
// Provides predicate information for branches.
|
||||
|
@ -1539,12 +1539,8 @@ NewGVN::performSymbolicPredicateInfoEvaluation(Instruction *I) const {
|
||||
|
||||
LLVM_DEBUG(dbgs() << "Found predicate info from instruction !\n");
|
||||
|
||||
auto *PWC = dyn_cast<PredicateWithCondition>(PI);
|
||||
if (!PWC)
|
||||
return nullptr;
|
||||
|
||||
auto *CopyOf = I->getOperand(0);
|
||||
auto *Cond = PWC->Condition;
|
||||
auto *Cond = PI->Condition;
|
||||
|
||||
// If this a copy of the condition, it must be either true or false depending
|
||||
// on the predicate info type and edge.
|
||||
|
Loading…
Reference in New Issue
Block a user