mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00:00
Convert manual insert point restores to the new RAII object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191675 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1027,25 +1027,19 @@ LoopVectorizationLegality::RuntimePointerCheck::insert(ScalarEvolution *SE,
|
||||
}
|
||||
|
||||
Value *InnerLoopVectorizer::getBroadcastInstrs(Value *V) {
|
||||
// Save the current insertion location.
|
||||
Instruction *Loc = Builder.GetInsertPoint();
|
||||
|
||||
// We need to place the broadcast of invariant variables outside the loop.
|
||||
Instruction *Instr = dyn_cast<Instruction>(V);
|
||||
bool NewInstr = (Instr && Instr->getParent() == LoopVectorBody);
|
||||
bool Invariant = OrigLoop->isLoopInvariant(V) && !NewInstr;
|
||||
|
||||
// Place the code for broadcasting invariant variables in the new preheader.
|
||||
IRBuilder<>::InsertPointGuard Guard(Builder);
|
||||
if (Invariant)
|
||||
Builder.SetInsertPoint(LoopVectorPreHeader->getTerminator());
|
||||
|
||||
// Broadcast the scalar into all locations in the vector.
|
||||
Value *Shuf = Builder.CreateVectorSplat(VF, V, "broadcast");
|
||||
|
||||
// Restore the builder insertion point.
|
||||
if (Invariant)
|
||||
Builder.SetInsertPoint(Loc);
|
||||
|
||||
return Shuf;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user