diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-11-02 09:22:44 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-11-02 09:22:44 +0000 |
commit | 77c2754d58f38ce2d0c58d5dc08e9b618cddff33 (patch) | |
tree | c6848695f061b17647b0d817dbc8d9f61ce9ab62 /clang/lib | |
parent | 53f71d90e2b1b1a654a03a776be9fde291cad59f (diff) | |
download | bcm5719-llvm-77c2754d58f38ce2d0c58d5dc08e9b618cddff33.tar.gz bcm5719-llvm-77c2754d58f38ce2d0c58d5dc08e9b618cddff33.zip |
Sema: Flexible array members were introduced in C99, diagnose their use in C++
The declaration of a flexible array member was correctly diagnosed as an
extension in C89 mode but not in C++.
llvm-svn: 193918
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 4c2c7d66ecb..6c8b36c6cc9 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -11829,6 +11829,9 @@ void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, else if (Fields.size() == 1) Diag(FD->getLocation(), diag::ext_flexible_array_empty_aggregate_ms) << FD->getDeclName() << Record->getTagKind(); + else + Diag(FD->getLocation(), diag::ext_c99_flexible_array_member) + << FD->getDeclName() << Record->getTagKind(); } else if (getLangOpts().CPlusPlus) { if (Record->isUnion()) Diag(FD->getLocation(), diag::ext_flexible_array_union_gnu) @@ -11836,6 +11839,9 @@ void Sema::ActOnFields(Scope *S, SourceLocation RecLoc, Decl *EnclosingDecl, else if (Fields.size() == 1) Diag(FD->getLocation(), diag::ext_flexible_array_empty_aggregate_gnu) << FD->getDeclName() << Record->getTagKind(); + else + Diag(FD->getLocation(), diag::ext_c99_flexible_array_member) + << FD->getDeclName() << Record->getTagKind(); } else if (!getLangOpts().C99) { if (Record->isUnion()) Diag(FD->getLocation(), diag::ext_flexible_array_union_gnu) |