From f8c2f90bb3c70ab1830b44da990bda499f1e65d1 Mon Sep 17 00:00:00 2001 From: Nadav Rotem Date: Fri, 25 Jan 2013 18:34:09 +0000 Subject: [PATCH] Refactor some code to use the IRBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173467 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Vectorize/LoopVectorize.cpp | 39 +++++++++++----------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 0996b7b2cd3..0302bbf1cfe 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -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(B); + } else { + MemoryRuntimeCheck = cast(IsConflict); + } } }