diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-09-14 04:35:37 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-09-14 04:35:37 +0000 |
commit | 0064c5968f3866b891b34045b3c90fbcf67ec392 (patch) | |
tree | 7459d27814e544c92318821669e3a82c420dc5fa | |
parent | 45d849c4bddc54105f61e6f8864341664d0433ed (diff) | |
download | bcm5719-llvm-0064c5968f3866b891b34045b3c90fbcf67ec392.tar.gz bcm5719-llvm-0064c5968f3866b891b34045b3c90fbcf67ec392.zip |
In debugger mode, allow comparisons between pointers and integers
without a cast. Fixes <rdar://problem/11830912>.
llvm-svn: 163873
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 5 | ||||
-rw-r--r-- | clang/test/SemaObjCXX/debugger-support.mm | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index cfa9ccbfc33..3d143c8097f 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/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/clang/test/SemaObjCXX/debugger-support.mm b/clang/test/SemaObjCXX/debugger-support.mm new file mode 100644 index 00000000000..1fb18b9c341 --- /dev/null +++ b/clang/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) {} +} |