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 | f6565a9f7318b1ca6ea9510003dde7b89696daab (patch) | |
tree | 86b86d9f7d52395d08d9bed8250c6ab2ce7e7d46 /lib/Parse/ParseDecl.cpp | |
parent | 745af1c348191bf31cfcd3ae61443a0321ec2d75 (diff) |
Handle alignas(foo...) pack expansions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175875 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseDecl.cpp')
-rw-r--r-- | lib/Parse/ParseDecl.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index a204532789..4628f3dc17 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/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 |