diff --git a/lib/Extractor/Candidates.cpp b/lib/Extractor/Candidates.cpp index 2c9173cad..d89593192 100644 --- a/lib/Extractor/Candidates.cpp +++ b/lib/Extractor/Candidates.cpp @@ -91,6 +91,10 @@ static llvm::cl::opt PrintDemandedBitsAtReturn( "print-demanded-bits-from-harvester", llvm::cl::desc("Print demanded bits (default=false)"), llvm::cl::init(false)); +static llvm::cl::opt ExtractPhi( + "extract-phi", + llvm::cl::desc("Follow PHI nodes when extracting from LLVM (default=true)"), + llvm::cl::init(true)); extern bool UseAlive; @@ -514,6 +518,9 @@ Inst *ExprBuilder::buildHelper(Value *V) { if (UseAlive) { // FIXME: Remove this after alive supports phi return makeArrayRead(V); } + if (!ExtractPhi) { + return makeArrayRead(V); + } if (!isLoopEntryPoint(Phi)) { BasicBlock *BB = Phi->getParent(); BlockInfo &BI = EBC.BlockMap[BB];