1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
from the commit (r342197) of https://reviews.llvm.org/D50820.

llvm-svn: 342201
This commit is contained in:
Hideki Saito 2018-09-14 02:02:57 +00:00
parent 0ecce5d4da
commit 5053e93d46
3 changed files with 11 additions and 4 deletions

View File

@ -205,10 +205,6 @@ void VPBasicBlock::execute(VPTransformState *State) {
Value *IRCBV = CBV->getUnderlyingValue();
assert(IRCBV && "Unexpected null underlying value for condition bit");
// Delete the condition bit at this point - it should be no longer needed.
delete CBV;
setCondBit(nullptr);
// Condition bit value in a VPBasicBlock is used as the branch selector. In
// the VPlan-native path case, since all branches are uniform we generate a
// branch instruction using the condition value from vector lane 0 and dummy

View File

@ -1118,6 +1118,9 @@ private:
/// Holds the VPLoopInfo analysis for this VPlan.
VPLoopInfo VPLInfo;
/// Holds the condition bit values built during VPInstruction to VPRecipe transformation.
SmallVector<VPValue *, 4> VPCBVs;
public:
VPlan(VPBlockBase *Entry = nullptr) : Entry(Entry) {}
@ -1128,6 +1131,8 @@ public:
delete MapEntry.second;
for (VPValue *Def : VPExternalDefs)
delete Def;
for (VPValue *CBV : VPCBVs)
delete CBV;
}
/// Generate the IR code for this VPlan.
@ -1152,6 +1157,11 @@ public:
VPExternalDefs.insert(VPVal);
}
/// Add \p CBV to the vector of condition bit values.
void addCBV(VPValue *CBV) {
VPCBVs.push_back(CBV);
}
void addVPValue(Value *V) {
assert(V && "Trying to add a null Value to VPlan");
assert(!Value2VPValue.count(V) && "Value already exists in VPlan");

View File

@ -33,6 +33,7 @@ void VPlanHCFGTransforms::VPInstructionsToVPRecipes(
if (auto *CondBit = VPBB->getCondBit()) {
auto *NCondBit = new VPValue(CondBit->getUnderlyingValue());
VPBB->setCondBit(NCondBit);
Plan->addCBV(NCondBit);
}
}
for (VPBlockBase *Base : RPOT) {