[cfe-commits] r148722 - in /cfe/trunk: include/clang/Sema/Sema.h lib/Sema/SemaExpr.cpp
Eli Friedman
eli.friedman at gmail.com
Mon Jan 23 18:55:00 PST 2012
On Mon, Jan 23, 2012 at 12:38 PM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
> Author: akirtzidis
> Date: Mon Jan 23 14:38:53 2012
> New Revision: 148722
>
> URL: http://llvm.org/viewvc/llvm-project?rev=148722&view=rev
> Log:
> Introduce Sema::isNullExpr() that contains the checks that
> Sema::DiagnoseSentinelCalls() does.
What are you planning on using this for? The name is deceptive
because it's basically useless for anything other than sentinel
checking.
-Eli
> Modified:
> cfe/trunk/include/clang/Sema/Sema.h
> cfe/trunk/lib/Sema/SemaExpr.cpp
>
> Modified: cfe/trunk/include/clang/Sema/Sema.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=148722&r1=148721&r2=148722&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Sema/Sema.h (original)
> +++ cfe/trunk/include/clang/Sema/Sema.h Mon Jan 23 14:38:53 2012
> @@ -1375,6 +1375,7 @@
> QualType &ConvertedType);
> bool IsBlockPointerConversion(QualType FromType, QualType ToType,
> QualType& ConvertedType);
> + bool isNullExpr(const Expr *E) const;
> bool FunctionArgTypesAreEqual(const FunctionProtoType *OldType,
> const FunctionProtoType *NewType,
> unsigned *ArgPos = 0);
>
> Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=148722&r1=148721&r2=148722&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Jan 23 14:38:53 2012
> @@ -249,17 +249,7 @@
> Expr *sentinelExpr = args[numArgs - numArgsAfterSentinel - 1];
> if (!sentinelExpr) return;
> if (sentinelExpr->isValueDependent()) return;
> -
> - // nullptr_t is always treated as null.
> - if (sentinelExpr->getType()->isNullPtrType()) return;
> -
> - if (sentinelExpr->getType()->isAnyPointerType() &&
> - sentinelExpr->IgnoreParenCasts()->isNullPointerConstant(Context,
> - Expr::NPC_ValueDependentIsNull))
> - return;
> -
> - // Unfortunately, __null has type 'int'.
> - if (isa<GNUNullExpr>(sentinelExpr)) return;
> + if (isNullExpr(sentinelExpr)) return;
>
> // Pick a reasonable string to insert. Optimistically use 'nil' or
> // 'NULL' if those are actually defined in the context. Only use
> @@ -289,6 +279,24 @@
> return E ? E->getSourceRange() : SourceRange();
> }
>
> +bool Sema::isNullExpr(const Expr *E) const {
> + if (!E)
> + return false;
> +
> + // nullptr_t is always treated as null.
> + if (E->getType()->isNullPtrType()) return true;
> +
> + if (E->getType()->isAnyPointerType() &&
> + E->IgnoreParenCasts()->isNullPointerConstant(Context,
> + Expr::NPC_ValueDependentIsNull))
> + return true;
> +
> + // Unfortunately, __null has type 'int'.
> + if (isa<GNUNullExpr>(E)) return true;
> +
> + return false;
> +}
> +
> //===----------------------------------------------------------------------===//
> // Standard Promotions and Conversions
> //===----------------------------------------------------------------------===//
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list