SimplifyCFG: GEPs with just one non-constant index are also cheap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126452 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer
2011-02-24 23:26:09 +00:00
parent 107d366df7
commit 9ae59e3444
2 changed files with 27 additions and 5 deletions

View File

@@ -247,11 +247,13 @@ static bool DominatesMergePoint(Value *V, BasicBlock *BB,
if (PBB->getFirstNonPHIOrDbg() != I)
return false;
break;
case Instruction::GetElementPtr:
// GEPs are cheap if all indices are constant.
if (!cast<GetElementPtrInst>(I)->hasAllConstantIndices())
case Instruction::GetElementPtr: {
// GEPs are cheap if all indices are constant or if there's only one index.
GetElementPtrInst *GEP = cast<GetElementPtrInst>(I);
if (!GEP->hasAllConstantIndices() && GEP->getNumIndices() > 1)
return false;
break;
}
case Instruction::Add:
case Instruction::Sub:
case Instruction::And: