diff --git a/clang/include/clang/AST/ASTContext.h b/clang/include/clang/AST/ASTContext.h index 2a21f2d1f37eec..6f695f096857f0 100644 --- a/clang/include/clang/AST/ASTContext.h +++ b/clang/include/clang/AST/ASTContext.h @@ -2812,8 +2812,6 @@ class ASTContext : public RefCountedBase { unsigned getTargetAddressSpace(QualType T) const; - unsigned getTargetAddressSpace(Qualifiers Q) const; - unsigned getTargetAddressSpace(LangAS AS) const; LangAS getLangASForBuiltinAddressSpace(unsigned AS) const; diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index b9f9bec39317a0..e887f44b3ca0b6 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -12234,11 +12234,7 @@ unsigned ASTContext::getTargetAddressSpace(QualType T) const { // the best address space based on the type information return T->isFunctionType() && !T.hasAddressSpace() ? getTargetInfo().getProgramAddressSpace() - : getTargetAddressSpace(T.getQualifiers()); -} - -unsigned ASTContext::getTargetAddressSpace(Qualifiers Q) const { - return getTargetAddressSpace(Q.getAddressSpace()); + : getTargetAddressSpace(T.getAddressSpace()); } unsigned ASTContext::getTargetAddressSpace(LangAS AS) const { diff --git a/clang/lib/CodeGen/CodeGenTypes.cpp b/clang/lib/CodeGen/CodeGenTypes.cpp index 05956c2c1ec697..3869285e0b2cb6 100644 --- a/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/clang/lib/CodeGen/CodeGenTypes.cpp @@ -772,10 +772,10 @@ llvm::Type *CodeGenTypes::ConvertType(QualType T) { // Block pointers lower to function type. For function type, // getTargetAddressSpace() returns default address space for // function pointer i.e. program address space. Therefore, for block - // pointers, it is important to pass qualifiers when calling - // getTargetAddressSpace(), to ensure that we get the address space - // for data pointers and not function pointers. - unsigned AS = Context.getTargetAddressSpace(FTy.getQualifiers()); + // pointers, it is important to pass the pointee AST address space when + // calling getTargetAddressSpace(), to ensure that we get the LLVM IR + // address space for data pointers and not function pointers. + unsigned AS = Context.getTargetAddressSpace(FTy.getAddressSpace()); ResultType = llvm::PointerType::get(PointeeType, AS); break; }