diff options
-rw-r--r-- | CodeGen/CGBuiltin.cpp | 3 | ||||
-rw-r--r-- | CodeGen/CGExpr.cpp | 15 | ||||
-rw-r--r-- | CodeGen/CGExprAgg.cpp | 2 | ||||
-rw-r--r-- | CodeGen/CodeGenModule.cpp | 4 | ||||
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 8 |
5 files changed, 19 insertions, 13 deletions
diff --git a/CodeGen/CGBuiltin.cpp b/CodeGen/CGBuiltin.cpp index 8668e4ea39..89ca831578 100644 --- a/CodeGen/CGBuiltin.cpp +++ b/CodeGen/CGBuiltin.cpp @@ -113,7 +113,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) { case Builtin::BI__builtin_va_start: case Builtin::BI__builtin_va_end: { Value *ArgValue = EmitScalarExpr(E->getArg(0)); - const llvm::Type *DestType = llvm::PointerType::get(llvm::Type::Int8Ty); + const llvm::Type *DestType = + llvm::PointerType::getUnqual(llvm::Type::Int8Ty); if (ArgValue->getType() != DestType) ArgValue = Builder.CreateBitCast(ArgValue, DestType, ArgValue->getNameStart()); diff --git a/CodeGen/CGExpr.cpp b/CodeGen/CGExpr.cpp index ab5d05969e..8d136bc0b4 100644 --- a/CodeGen/CGExpr.cpp +++ b/CodeGen/CGExpr.cpp @@ -83,7 +83,7 @@ LValue CodeGenFunction::EmitLValue(const Expr *E) { switch (E->getStmtClass()) { default: { WarnUnsupported(E, "l-value expression"); - llvm::Type *Ty = llvm::PointerType::get(ConvertType(E->getType())); + llvm::Type *Ty = llvm::PointerType::getUnqual(ConvertType(E->getType())); return LValue::MakeAddr(llvm::UndefValue::get(Ty)); } @@ -220,11 +220,13 @@ void CodeGenFunction::EmitStoreThroughLValue(RValue Src, LValue Dst, assert(Src.isScalar() && "Can't emit an agg store with this method"); // FIXME: Handle volatility etc. const llvm::Type *SrcTy = Src.getScalarVal()->getType(); - const llvm::Type *AddrTy = - cast<llvm::PointerType>(DstAddr->getType())->getElementType(); + const llvm::PointerType *DstPtr = cast<llvm::PointerType>(DstAddr->getType()); + const llvm::Type *AddrTy = DstPtr->getElementType(); + unsigned AS = DstPtr->getAddressSpace(); if (AddrTy != SrcTy) - DstAddr = Builder.CreateBitCast(DstAddr, llvm::PointerType::get(SrcTy), + DstAddr = Builder.CreateBitCast(DstAddr, + llvm::PointerType::get(SrcTy, AS), "storetmp"); Builder.CreateStore(Src.getScalarVal(), DstAddr); } @@ -422,7 +424,10 @@ LValue CodeGenFunction::EmitMemberExpr(const MemberExpr *E) { const llvm::PointerType * BaseTy = cast<llvm::PointerType>(BaseValue->getType()); if (FieldTy != BaseTy->getElementType()) { - V = Builder.CreateBitCast(V, llvm::PointerType::get(FieldTy), "tmp"); + // FIXME: Need to get address space qualification of pointer + V = Builder.CreateBitCast(V, + llvm::PointerType::getUnqual(FieldTy), + "tmp"); } } return LValue::MakeAddr(V); diff --git a/CodeGen/CGExprAgg.cpp b/CodeGen/CGExprAgg.cpp index 1d60a8656c..969995c4f5 100644 --- a/CodeGen/CGExprAgg.cpp +++ b/CodeGen/CGExprAgg.cpp @@ -92,7 +92,7 @@ void AggExprEmitter::EmitAggregateCopy(llvm::Value *DestPtr, assert(!Ty->isComplexType() && "Shouldn't happen for complex"); // Aggregate assignment turns into llvm.memcpy. - const llvm::Type *BP = llvm::PointerType::get(llvm::Type::Int8Ty); + const llvm::Type *BP = llvm::PointerType::getUnqual(llvm::Type::Int8Ty); if (DestPtr->getType() != BP) DestPtr = Builder.CreateBitCast(DestPtr, BP, "tmp"); if (SrcPtr->getType() != BP) diff --git a/CodeGen/CodeGenModule.cpp b/CodeGen/CodeGenModule.cpp index 2df1877e79..ea908d398c 100644 --- a/CodeGen/CodeGenModule.cpp +++ b/CodeGen/CodeGenModule.cpp @@ -75,7 +75,7 @@ llvm::Constant *CodeGenModule::GetAddrOfFunctionDecl(const FunctionDecl *D, } // If the pointer type matches, just return it. - llvm::Type *PFTy = llvm::PointerType::get(Ty); + llvm::Type *PFTy = llvm::PointerType::getUnqual(Ty); if (PFTy == F->getType()) return Entry = F; // If this isn't a definition, just return it casted to the right type. @@ -132,7 +132,7 @@ llvm::Constant *CodeGenModule::GetAddrOfFileVarDecl(const FileVarDecl *D, } // If the pointer type matches, just return it. - llvm::Type *PTy = llvm::PointerType::get(Ty); + llvm::Type *PTy = llvm::PointerType::getUnqual(Ty); if (PTy == GV->getType()) return Entry = GV; // If this isn't a definition, just return it casted to the right type. diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 54cc8b1236..cc40af8f94 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -178,11 +178,11 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) { } case Type::Pointer: { const PointerType &P = cast<PointerType>(Ty); - return llvm::PointerType::get(ConvertType(P.getPointeeType())); + return llvm::PointerType::getUnqual(ConvertType(P.getPointeeType())); } case Type::Reference: { const ReferenceType &R = cast<ReferenceType>(Ty); - return llvm::PointerType::get(ConvertType(R.getReferenceeType())); + return llvm::PointerType::getUnqual(ConvertType(R.getReferenceeType())); } case Type::VariableArray: { @@ -224,7 +224,7 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) { // Struct return passes the struct byref. if (!ResultType->isFirstClassType() && ResultType != llvm::Type::VoidTy) { - const llvm::Type *RType = llvm::PointerType::get(ResultType); + const llvm::Type *RType = llvm::PointerType::getUnqual(ResultType); QualType RTy = Context.getPointerType(FP.getResultType()); TypeHolderMap.insert(std::make_pair(RTy.getTypePtr(), llvm::PATypeHolder(RType))); @@ -355,7 +355,7 @@ void CodeGenTypes::DecodeArgumentTypes(const FunctionTypeProto &FTP, ArgTys.push_back(Ty); else { QualType PTy = Context.getPointerType(FTP.getArgType(i)); - const llvm::Type *PtrTy = llvm::PointerType::get(Ty); + const llvm::Type *PtrTy = llvm::PointerType::getUnqual(Ty); TypeHolderMap.insert(std::make_pair(PTy.getTypePtr(), llvm::PATypeHolder(PtrTy))); |