diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-02-22 08:32:16 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-02-22 08:32:16 +0000 |
commit | 44c247f0f009eec70a193335c8a353d6f8602bfd (patch) | |
tree | e44b2e98e2d142a24b99541b53dce5a8ac3e7d81 /clang/lib/Parse/ParseDecl.cpp | |
parent | de49b8fa3b733e7fcf07d27998014befc2ef97c1 (diff) | |
download | bcm5719-llvm-44c247f0f009eec70a193335c8a353d6f8602bfd.tar.gz bcm5719-llvm-44c247f0f009eec70a193335c8a353d6f8602bfd.zip |
Handle alignas(foo...) pack expansions.
llvm-svn: 175875
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index a2045327890..4628f3dc17c 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -2101,7 +2101,7 @@ ExprResult Parser::ParseAlignArgument(SourceLocation Start, /// [C++11] 'alignas' '(' type-id ...[opt] ')' /// [C++11] 'alignas' '(' assignment-expression ...[opt] ')' void Parser::ParseAlignmentSpecifier(ParsedAttributes &Attrs, - SourceLocation *endLoc) { + SourceLocation *EndLoc) { assert((Tok.is(tok::kw_alignas) || Tok.is(tok::kw__Alignas)) && "Not an alignment-specifier!"); @@ -2120,19 +2120,13 @@ void Parser::ParseAlignmentSpecifier(ParsedAttributes &Attrs, } T.consumeClose(); - if (endLoc) - *endLoc = T.getCloseLocation(); - - // FIXME: Handle pack-expansions here. - if (EllipsisLoc.isValid()) { - Diag(EllipsisLoc, diag::err_alignas_pack_exp_unsupported); - return; - } + if (EndLoc) + *EndLoc = T.getCloseLocation(); ExprVector ArgExprs; ArgExprs.push_back(ArgExpr.release()); Attrs.addNew(KWName, KWLoc, 0, KWLoc, 0, T.getOpenLocation(), - ArgExprs.data(), 1, AttributeList::AS_Keyword); + ArgExprs.data(), 1, AttributeList::AS_Keyword, EllipsisLoc); } /// ParseDeclarationSpecifiers |