diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-03-18 23:37:25 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-03-18 23:37:25 +0000 |
commit | 9cf21ae068bd89f3473b811e4e5567aea6e26185 (patch) | |
tree | 00cef493af4edee52c329eff5b4cb904c3388521 /clang/lib | |
parent | 2d0edec994ebf22ba0dc9dccac215b1a9948e307 (diff) | |
download | bcm5719-llvm-9cf21ae068bd89f3473b811e4e5567aea6e26185.tar.gz bcm5719-llvm-9cf21ae068bd89f3473b811e4e5567aea6e26185.zip |
Diagnose uses of 'alignof' on functions in -pedantic mode.
llvm-svn: 177354
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index f52621a80b8..bf4632c7bf6 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -3012,16 +3012,17 @@ static bool CheckExtensionTraitOperandType(Sema &S, QualType T, SourceRange ArgRange, UnaryExprOrTypeTrait TraitKind) { // C99 6.5.3.4p1: - if (T->isFunctionType()) { - // alignof(function) is allowed as an extension. - if (TraitKind == UETT_SizeOf) - S.Diag(Loc, diag::ext_sizeof_function_type) << ArgRange; + if (T->isFunctionType() && + (TraitKind == UETT_SizeOf || TraitKind == UETT_AlignOf)) { + // sizeof(function)/alignof(function) is allowed as an extension. + S.Diag(Loc, diag::ext_sizeof_alignof_function_type) + << TraitKind << ArgRange; return false; } // Allow sizeof(void)/alignof(void) as an extension. if (T->isVoidType()) { - S.Diag(Loc, diag::ext_sizeof_void_type) << TraitKind << ArgRange; + S.Diag(Loc, diag::ext_sizeof_alignof_void_type) << TraitKind << ArgRange; return false; } |