Refactor some code to use the IRBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nadav Rotem 2013-01-25 18:34:09 +00:00
parent 172d5978c8
commit f8c2f90bb3

View File

@ -941,29 +941,30 @@ InnerLoopVectorizer::addRuntimeCheck(LoopVectorizationLegality *Legal,
}
}
IRBuilder<> ChkBuilder(Loc->getContext());
ChkBuilder.SetInsertPoint(Loc);
for (unsigned i = 0; i < NumPointers; ++i) {
for (unsigned j = i+1; j < NumPointers; ++j) {
Instruction::CastOps Op = Instruction::BitCast;
Value *Start0 = CastInst::Create(Op, Starts[i], PtrArithTy, "bc", Loc);
Value *Start1 = CastInst::Create(Op, Starts[j], PtrArithTy, "bc", Loc);
Value *End0 = CastInst::Create(Op, Ends[i], PtrArithTy, "bc", Loc);
Value *End1 = CastInst::Create(Op, Ends[j], PtrArithTy, "bc", Loc);
Value *Cmp0 = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULE,
Start0, End1, "bound0", Loc);
Value *Cmp1 = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULE,
Start1, End0, "bound1", Loc);
Instruction *IsConflict = BinaryOperator::Create(Instruction::And, Cmp0,
Cmp1, "found.conflict",
Loc);
if (MemoryRuntimeCheck)
MemoryRuntimeCheck = BinaryOperator::Create(Instruction::Or,
MemoryRuntimeCheck,
IsConflict,
"conflict.rdx", Loc);
else
MemoryRuntimeCheck = IsConflict;
Value *Start0 = ChkBuilder.CreateCast(Op, Starts[i], PtrArithTy, "bc");
Value *Start1 = ChkBuilder.CreateCast(Op, Starts[j], PtrArithTy, "bc");
Value *End0 = ChkBuilder.CreateCast(Op, Ends[i], PtrArithTy, "bc");
Value *End1 = ChkBuilder.CreateCast(Op, Ends[j], PtrArithTy, "bc");
Value *Cmp0 = ChkBuilder.CreateICmp(CmpInst::ICMP_ULE,
Start0, End1, "bound0");
Value *Cmp1 = ChkBuilder.CreateICmp(CmpInst::ICMP_ULE,
Start1, End0, "bound1");
Value *IsConflict = ChkBuilder.CreateBinOp(Instruction::And, Cmp0, Cmp1,
"found.conflict");
if (MemoryRuntimeCheck) {
Value *B = ChkBuilder.CreateBinOp(Instruction::Or, MemoryRuntimeCheck,
IsConflict, "conflict.rdx");
MemoryRuntimeCheck = cast<Instruction>(B);
} else {
MemoryRuntimeCheck = cast<Instruction>(IsConflict);
}
}
}