mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
Change LoadAndStorePromoter to take ArrayRef instead of SmallVectorImpl&.
The array passed to LoadAndStorePromoter's constructor was a constant reference to a SmallVectorImpl, which is just the same as passing an ArrayRef. Also, the data in the array can be 'const Instruction*' instead of 'Instruction*'. Its not possible to convert a SmallVectorImpl<T*> to SmallVectorImpl<const T*>, but ArrayRef does provide such a method. Currently this added calls to makeArrayRef which should be a nop, but i'm going to kick off a discussion about improving ArrayRef to not need these. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237226 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -714,7 +714,8 @@ namespace {
|
||||
}
|
||||
|
||||
public:
|
||||
LoopPromoter(Value *SP, const SmallVectorImpl<Instruction *> &Insts,
|
||||
LoopPromoter(Value *SP,
|
||||
ArrayRef<const Instruction *> Insts,
|
||||
SSAUpdater &S, SmallPtrSetImpl<Value *> &PMA,
|
||||
SmallVectorImpl<BasicBlock *> &LEB,
|
||||
SmallVectorImpl<Instruction *> &LIP, PredIteratorCache &PIC,
|
||||
@@ -920,7 +921,8 @@ bool llvm::promoteLoopAccessesToScalars(AliasSet &AS,
|
||||
// We use the SSAUpdater interface to insert phi nodes as required.
|
||||
SmallVector<PHINode*, 16> NewPHIs;
|
||||
SSAUpdater SSA(&NewPHIs);
|
||||
LoopPromoter Promoter(SomePtr, LoopUses, SSA, PointerMustAliases, ExitBlocks,
|
||||
LoopPromoter Promoter(SomePtr, makeArrayRef(LoopUses), SSA,
|
||||
PointerMustAliases, ExitBlocks,
|
||||
InsertPts, PIC, *CurAST, *LI, DL, Alignment, AATags);
|
||||
|
||||
// Set up the preheader to have a definition of the value. It is the live-out
|
||||
|
||||
Reference in New Issue
Block a user