[cfe-commits] r89778 - in /cfe/trunk: lib/Sema/SemaExpr.cpp test/SemaCXX/attr-sentinel.cpp
Anders Carlsson
andersca at mac.com
Tue Nov 24 09:24:21 PST 2009
Author: andersca
Date: Tue Nov 24 11:24:21 2009
New Revision: 89778
URL: http://llvm.org/viewvc/llvm-project?rev=89778&view=rev
Log:
GNUNullExpr is a valid sentinel even though it isn't of pointer type.
Added:
cfe/trunk/test/SemaCXX/attr-sentinel.cpp
Modified:
cfe/trunk/lib/Sema/SemaExpr.cpp
Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=89778&r1=89777&r2=89778&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Nov 24 11:24:21 2009
@@ -152,9 +152,10 @@
++sentinel;
}
Expr *sentinelExpr = Args[sentinel];
- if (sentinelExpr && (!sentinelExpr->getType()->isPointerType() ||
- !sentinelExpr->isNullPointerConstant(Context,
- Expr::NPC_ValueDependentIsNull))) {
+ if (sentinelExpr && (!isa<GNUNullExpr>(sentinelExpr) &&
+ (!sentinelExpr->getType()->isPointerType() ||
+ !sentinelExpr->isNullPointerConstant(Context,
+ Expr::NPC_ValueDependentIsNull)))) {
Diag(Loc, diag::warn_missing_sentinel) << isMethod;
Diag(D->getLocation(), diag::note_sentinel_here) << isMethod;
}
Added: cfe/trunk/test/SemaCXX/attr-sentinel.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-sentinel.cpp?rev=89778&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/attr-sentinel.cpp (added)
+++ cfe/trunk/test/SemaCXX/attr-sentinel.cpp Tue Nov 24 11:24:21 2009
@@ -0,0 +1,6 @@
+// RUN: clang-cc -fsyntax-only -verify %s
+void f(int, ...) __attribute__((sentinel));
+
+void g() {
+ f(1, 2, __null);
+}
More information about the cfe-commits
mailing list