diff options
| author | Chris Lattner <sabre@nondot.org> | 2002-08-21 22:10:52 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2002-08-21 22:10:52 +0000 |
| commit | 67a806ed90a25d80989f247aff956bfcd40a0dcc (patch) | |
| tree | 6dd36916a407e25552facd480a4f1fe0af88e6d0 | |
| parent | 6f66bc80163fe87216150b2d4f91d92425fd7d87 (diff) | |
| download | bcm5719-llvm-67a806ed90a25d80989f247aff956bfcd40a0dcc.tar.gz bcm5719-llvm-67a806ed90a25d80989f247aff956bfcd40a0dcc.zip | |
Do not create load/stores with indexes
llvm-svn: 3420
| -rw-r--r-- | llvm/lib/Transforms/IPO/MutateStructTypes.cpp | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/IPO/MutateStructTypes.cpp b/llvm/lib/Transforms/IPO/MutateStructTypes.cpp index f0dc16f3e2b..2059f9f2a90 100644 --- a/llvm/lib/Transforms/IPO/MutateStructTypes.cpp +++ b/llvm/lib/Transforms/IPO/MutateStructTypes.cpp @@ -413,26 +413,28 @@ void MutateStructTypes::transformFunction(Function *m) { break; case Instruction::Load: + assert(cast<MemAccessInst>(I).idx_begin() == + cast<MemAccessInst>(I).idx_end() && + "Indexing loads not supported!"); + NewI = new LoadInst(ConvertValue(I.getOperand(0))); + break; case Instruction::Store: + assert(cast<MemAccessInst>(I).idx_begin() == + cast<MemAccessInst>(I).idx_end() && + "Indexing loads not supported!"); + NewI = new StoreInst(ConvertValue(I.getOperand(0)), + ConvertValue(I.getOperand(1))); + break; case Instruction::GetElementPtr: { - const MemAccessInst &MAI = cast<MemAccessInst>(I); - vector<Value*> Indices(MAI.idx_begin(), MAI.idx_end()); - const Value *Ptr = MAI.getPointerOperand(); - Value *NewPtr = ConvertValue(Ptr); + const GetElementPtrInst &GEP = cast<GetElementPtrInst>(I); + vector<Value*> Indices(GEP.idx_begin(), GEP.idx_end()); if (!Indices.empty()) { - const Type *PTy = cast<PointerType>(Ptr->getType())->getElementType(); + const Type *PTy = + cast<PointerType>(GEP.getOperand(0)->getType())->getElementType(); AdjustIndices(cast<CompositeType>(PTy), Indices); } - if (isa<LoadInst>(I)) { - NewI = new LoadInst(NewPtr, Indices); - } else if (isa<StoreInst>(I)) { - NewI = new StoreInst(ConvertValue(I.getOperand(0)), NewPtr, Indices); - } else if (isa<GetElementPtrInst>(I)) { - NewI = new GetElementPtrInst(NewPtr, Indices); - } else { - assert(0 && "Unknown memory access inst!!!"); - } + NewI = new GetElementPtrInst(ConvertValue(GEP.getOperand(0)), Indices); break; } |

