From: Douglas Gregor Date: Fri, 14 Sep 2012 04:35:37 +0000 (+0000) Subject: In debugger mode, allow comparisons between pointers and integers X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6db351abf27e907b4a01570a6aa8e7b898522449;p=clang In debugger mode, allow comparisons between pointers and integers without a cast. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163873 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index cfa9ccbfc3..3d143c8097 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -7214,7 +7214,10 @@ QualType Sema::CheckCompareOperands(ExprResult &LHS, ExprResult &RHS, (LHSType->isIntegerType() && RHSType->isAnyPointerType())) { unsigned DiagID = 0; bool isError = false; - if ((LHSIsNull && LHSType->isIntegerType()) || + if (LangOpts.DebuggerSupport) { + // Under a debugger, allow the comparison of pointers to integers, + // since users tend to want to compare addresses. + } else if ((LHSIsNull && LHSType->isIntegerType()) || (RHSIsNull && RHSType->isIntegerType())) { if (IsRelational && !getLangOpts().CPlusPlus) DiagID = diag::ext_typecheck_ordered_comparison_of_pointer_and_zero; diff --git a/test/SemaObjCXX/debugger-support.mm b/test/SemaObjCXX/debugger-support.mm new file mode 100644 index 0000000000..1fb18b9c34 --- /dev/null +++ b/test/SemaObjCXX/debugger-support.mm @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -fdebugger-support -fsyntax-only -verify %s + +@class NSString; +void testCompareAgainstPtr(int *ptr, NSString *ns) { + if (ptr == 17) {} + if (ns != 42) {} +}