From: Ted Kremenek Date: Tue, 4 Sep 2007 17:20:08 +0000 (+0000) Subject: Updated calls to CreateGEP to new interface in LLVM mainline. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6278899cfab51f456c747d3b6ec969a496503eb;p=clang Updated calls to CreateGEP to new interface in LLVM mainline. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41704 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CodeGen/CGExprComplex.cpp b/CodeGen/CGExprComplex.cpp index d4e209476d..9c02641d1f 100644 --- a/CodeGen/CGExprComplex.cpp +++ b/CodeGen/CGExprComplex.cpp @@ -191,14 +191,18 @@ ComplexPairTy ComplexExprEmitter::EmitLoadOfComplex(llvm::Value *SrcPtr, SrcPtr->getNameStart()+SrcPtr->getNameLen()); Name += ".realp"; - llvm::Value *RealPtr = Builder.CreateGEP(SrcPtr, Zero, Zero, Name.c_str()); + llvm::Value *Ops[] = {Zero, Zero}; + llvm::Value *RealPtr = Builder.CreateGEP(SrcPtr, Ops, Ops+2, Name.c_str()); Name.pop_back(); // .realp -> .real llvm::Value *Real = Builder.CreateLoad(RealPtr, isVolatile, Name.c_str()); Name.resize(Name.size()-4); // .real -> .imagp Name += "imagp"; - llvm::Value *ImagPtr = Builder.CreateGEP(SrcPtr, Zero, One, Name.c_str()); + + Ops[1] = One; // { Ops = { Zero, One } + llvm::Value *ImagPtr = Builder.CreateGEP(SrcPtr, Ops, Ops+2, Name.c_str()); + Name.pop_back(); // .imagp -> .imag llvm::Value *Imag = Builder.CreateLoad(ImagPtr, isVolatile, Name.c_str()); return ComplexPairTy(Real, Imag); @@ -210,8 +214,12 @@ void ComplexExprEmitter::EmitStoreOfComplex(ComplexPairTy Val, llvm::Value *Ptr, bool isVolatile) { llvm::Constant *Zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0); llvm::Constant *One = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1); - llvm::Value *RealPtr = Builder.CreateGEP(Ptr, Zero, Zero, "real"); - llvm::Value *ImagPtr = Builder.CreateGEP(Ptr, Zero, One, "imag"); + + llvm::Value *Ops[] = {Zero, Zero}; + llvm::Value *RealPtr = Builder.CreateGEP(Ptr, Ops, Ops+2, "real"); + + Ops[1] = One; // { Ops = { Zero, One } + llvm::Value *ImagPtr = Builder.CreateGEP(Ptr, Ops, Ops+2, "imag"); Builder.CreateStore(Val.first, RealPtr, isVolatile); Builder.CreateStore(Val.second, ImagPtr, isVolatile); diff --git a/CodeGen/CGExprScalar.cpp b/CodeGen/CGExprScalar.cpp index e0a871831e..3bb2678a6c 100644 --- a/CodeGen/CGExprScalar.cpp +++ b/CodeGen/CGExprScalar.cpp @@ -415,7 +415,9 @@ Value *ScalarExprEmitter::VisitImplicitCastExpr(const ImplicitCastExpr *E) { ->getElementType()) && "Doesn't support VLAs yet!"); llvm::Constant *Idx0 = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0); - return Builder.CreateGEP(V, Idx0, Idx0, "arraydecay"); + + llvm::Value *Ops[] = {Idx0, Idx0}; + return Builder.CreateGEP(V, Ops, Ops+2, "arraydecay"); } return EmitCastExpr(Op, E->getType());