diff options
author | Devang Patel <dpatel@apple.com> | 2012-02-06 23:24:13 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2012-02-06 23:24:13 +0000 |
commit | 362ed2a95b70aaea4869bfa9ecaf581a6c180b40 (patch) | |
tree | 731a23e9494b5903264add5f60065034ff0a9ca1 | |
parent | d79ed43d2bb9dd4a54889450ecff9299a9d4d1bc (diff) |
Relax valid location check. This fixes a clang crash while emitting debug info for properties that are synthesized by the compiler by default.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149929 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/CGDebugInfo.cpp | 6 | ||||
-rw-r--r-- | test/CodeGenObjC/debug-info-property4.m | 17 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index addc254128..9a0121ea50 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -233,7 +233,8 @@ llvm::DIFile CGDebugInfo::getOrCreateMainFile() { /// getLineNumber - Get line number for the location. If location is invalid /// then use current location. unsigned CGDebugInfo::getLineNumber(SourceLocation Loc) { - assert((Loc.isValid() || CurLoc.isValid()) && "Invalid current location!"); + if (Loc.isInvalid() && CurLoc.isInvalid()) + return 0; SourceManager &SM = CGM.getContext().getSourceManager(); PresumedLoc PLoc = SM.getPresumedLoc(Loc.isValid() ? Loc : CurLoc); return PLoc.isValid()? PLoc.getLine() : 0; @@ -242,7 +243,8 @@ unsigned CGDebugInfo::getLineNumber(SourceLocation Loc) { /// getColumnNumber - Get column number for the location. If location is /// invalid then use current location. unsigned CGDebugInfo::getColumnNumber(SourceLocation Loc) { - assert((Loc.isValid() || CurLoc.isValid()) && "Invalid current location!"); + if (Loc.isInvalid() && CurLoc.isInvalid()) + return 0; SourceManager &SM = CGM.getContext().getSourceManager(); PresumedLoc PLoc = SM.getPresumedLoc(Loc.isValid() ? Loc : CurLoc); return PLoc.isValid()? PLoc.getColumn() : 0; diff --git a/test/CodeGenObjC/debug-info-property4.m b/test/CodeGenObjC/debug-info-property4.m new file mode 100644 index 0000000000..619813f687 --- /dev/null +++ b/test/CodeGenObjC/debug-info-property4.m @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -fobjc-default-synthesize-properties -masm-verbose -S -g %s -o - | FileCheck %s + +// CHECK: AT_APPLE_property_name +// CHECK: AT_APPLE_property_getter +// CHECK: AT_APPLE_property_setter +// CHECK: AT_APPLE_property_attribute +// CHECK: AT_APPLE_property + + +@interface I1 +@property int p1; +@end + +@implementation I1 +@end + +void foo(I1 *ptr) {} |