mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +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:
@@ -322,12 +322,12 @@ Value *SSAUpdater::GetValueAtEndOfBlockInternal(BasicBlock *BB) {
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
LoadAndStorePromoter::
|
||||
LoadAndStorePromoter(const SmallVectorImpl<Instruction*> &Insts,
|
||||
LoadAndStorePromoter(ArrayRef<const Instruction*> Insts,
|
||||
SSAUpdater &S, StringRef BaseName) : SSA(S) {
|
||||
if (Insts.empty()) return;
|
||||
|
||||
Value *SomeVal;
|
||||
if (LoadInst *LI = dyn_cast<LoadInst>(Insts[0]))
|
||||
const Value *SomeVal;
|
||||
if (const LoadInst *LI = dyn_cast<LoadInst>(Insts[0]))
|
||||
SomeVal = LI;
|
||||
else
|
||||
SomeVal = cast<StoreInst>(Insts[0])->getOperand(0);
|
||||
|
Reference in New Issue
Block a user