forked from OSchip/llvm-project
[clang] Fix mismatched args constructing AddressSpaceAttr.
Differential Revision: https://reviews.llvm.org/D65589 llvm-svn: 368152
This commit is contained in:
parent
f241001793
commit
45f721ff05
|
@ -5978,9 +5978,9 @@ static void HandleAddressSpaceTypeAttribute(QualType &Type,
|
|||
}
|
||||
|
||||
ASTContext &Ctx = S.Context;
|
||||
auto *ASAttr = ::new (Ctx) AddressSpaceAttr(
|
||||
Attr.getRange(), Ctx, Attr.getAttributeSpellingListIndex(),
|
||||
static_cast<unsigned>(ASIdx));
|
||||
auto *ASAttr = ::new (Ctx)
|
||||
AddressSpaceAttr(Attr.getRange(), Ctx, static_cast<unsigned>(ASIdx),
|
||||
Attr.getAttributeSpellingListIndex());
|
||||
|
||||
// If the expression is not value dependent (not templated), then we can
|
||||
// apply the address space qualifiers just to the equivalent type.
|
||||
|
|
|
@ -139,6 +139,8 @@ struct templ<int>
|
|||
{
|
||||
};
|
||||
|
||||
void parmvardecl_attr(struct A __attribute__((address_space(19)))*);
|
||||
|
||||
)cpp");
|
||||
|
||||
const FunctionDecl *Func = getFunctionNode(AST.get(), "func");
|
||||
|
@ -220,5 +222,16 @@ FullComment
|
|||
R"cpp(
|
||||
TemplateArgument
|
||||
)cpp");
|
||||
|
||||
Func = getFunctionNode(AST.get(), "parmvardecl_attr");
|
||||
|
||||
const auto *Parm = Func->getParamDecl(0);
|
||||
const auto TL = Parm->getTypeSourceInfo()->getTypeLoc();
|
||||
ASSERT_TRUE(TL.getType()->isPointerType());
|
||||
|
||||
const auto ATL = TL.getNextTypeLoc().getAs<AttributedTypeLoc>();
|
||||
const auto *AS = cast<AddressSpaceAttr>(ATL.getAttr());
|
||||
EXPECT_EQ(toTargetAddressSpace(static_cast<LangAS>(AS->getAddressSpace())),
|
||||
19u);
|
||||
}
|
||||
} // namespace clang
|
||||
|
|
Loading…
Reference in New Issue