summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-03-18 23:37:25 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-03-18 23:37:25 +0000
commit9cf21ae068bd89f3473b811e4e5567aea6e26185 (patch)
tree00cef493af4edee52c329eff5b4cb904c3388521 /clang/lib
parent2d0edec994ebf22ba0dc9dccac215b1a9948e307 (diff)
downloadbcm5719-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.cpp11
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;
}
OpenPOWER on IntegriCloud