From ea32047660159811a4c14d008a4b7e3807a705d6 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 3 Apr 2012 00:44:15 +0000 Subject: Change location information for synthesized properties to be at the property file/line rather than the @synthesize file/line. Avoids some nasty confusing-ness with conflating the file from the scope and the line from the original declaration. Use the current scope location as a separate parameter so that we can match it up better in the line table with the beginning of the scope. Update a couple of testcases accordingly since I had to change that we actually use the passed in location in EmitFunctionStart and for the new metadata parameter and add a new testcase to make sure we've got the right line numbers for synthesized properties. Part of rdar://11026482 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153917 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGenObjC/debug-info-block-helper.m | 2 +- test/CodeGenObjC/debug-info-synthesis.m | 34 ++++++++++++++++++++++++++++++ test/CodeGenObjC/debug-property-synth.m | 3 ++- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 test/CodeGenObjC/debug-info-synthesis.m (limited to 'test/CodeGenObjC') diff --git a/test/CodeGenObjC/debug-info-block-helper.m b/test/CodeGenObjC/debug-info-block-helper.m index 8f88eb58a8..28374cd16d 100644 --- a/test/CodeGenObjC/debug-info-block-helper.m +++ b/test/CodeGenObjC/debug-info-block-helper.m @@ -2,7 +2,7 @@ // RUN: %clang_cc1 -emit-llvm -fblocks -g -triple x86_64-apple-darwin10 -fobjc-fragile-abi %s -o - | FileCheck %s extern void foo(void(^)(void)); -// CHECK: !40 = metadata !{i32 {{.*}}, i32 0, metadata !10, metadata !"__destroy_helper_block_", metadata !"__destroy_helper_block_", metadata !"", metadata !10, i32 24, metadata !41, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i8*)* @__destroy_helper_block_, null, null, metadata !43} ; [ DW_TAG_subprogram ] +// CHECK: !40 = metadata !{i32 {{.*}}, i32 0, metadata !25, metadata !"__destroy_helper_block_", metadata !"__destroy_helper_block_", metadata !"", metadata !25, i32 24, metadata !41, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i8*)* @__destroy_helper_block_, null, null, metadata !43, i32 24} ; [ DW_TAG_subprogram ] @interface NSObject { struct objc_object *isa; diff --git a/test/CodeGenObjC/debug-info-synthesis.m b/test/CodeGenObjC/debug-info-synthesis.m new file mode 100644 index 0000000000..389e623035 --- /dev/null +++ b/test/CodeGenObjC/debug-info-synthesis.m @@ -0,0 +1,34 @@ +// RUN: %clang_cc1 -emit-llvm -g -w -triple x86_64-apple-darwin10 %s -o - | FileCheck %s +# 1 "foo.m" 1 +# 1 "foo.m" 2 +# 1 "./foo.h" 1 +@interface NSObject { + struct objc_object *isa; +} +@end +@class NSDictionary; + +@interface Foo : NSObject {} +@property (strong, nonatomic) NSDictionary *dict; +@end +# 2 "foo.m" 2 + + + + +@implementation Foo +@synthesize dict = _dict; + +- (void) bork { +} +@end + +int main(int argc, char *argv[]) { + @autoreleasepool { + Foo *f = [Foo new]; + [f bork]; + } +} + +// CHECK: !11 = metadata !{i32 {{.*}}, metadata !"./foo.h" +// CHECK: !29 = metadata !{i32 {{.*}}, i32 0, metadata !11, metadata !"-[Foo dict]", metadata !"-[Foo dict]", metadata !"", metadata !11, i32 8, metadata !30, i1 true, i1 true, i32 0, i32 0, null, i32 320, i1 false, %1* (%0*, i8*)* @"\01-[Foo dict]", null, null, metadata !32, i32 8} ; [ DW_TAG_subprogram ] diff --git a/test/CodeGenObjC/debug-property-synth.m b/test/CodeGenObjC/debug-property-synth.m index 05852b7e29..954620a635 100644 --- a/test/CodeGenObjC/debug-property-synth.m +++ b/test/CodeGenObjC/debug-property-synth.m @@ -16,4 +16,5 @@ int main() { return 0; } -// CHECK: .loc 2 10 0 +// FIXME: Make this test ir files. +// CHECK: .loc 2 6 0 -- cgit v1.2.3