Sweet. That's what I was thinking the patch should look like.<br><br>Thanks Adrian. :)<div><br><div>-eric</div></div><br><div>On Tue Jan 07 2014 at 2:12:29 PM, Adrian Prantl <<a href="mailto:aprantl@apple.com">aprantl@apple.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: adrian<br>
Date: Tue Jan  7 16:05:55 2014<br>
New Revision: 198715<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=198715&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=198715&view=rev</a><br>
Log:<br>
Re-applying r198699 after reverting r198461.<br>
Debug info: Implement a cleaner version of r198461. For symmetry with<br>
C and C++ don't emit an extra lexical scope for the compound statement<br>
that is the body of an Objective-C method.<br>
<br>
Modified:<br>
    cfe/trunk/lib/CodeGen/CGObjC.<u></u>cpp<br>
    cfe/trunk/test/CodeGenCXX/<u></u>linetable-cleanup.cpp<br>
    cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable-autorelease.m<br>
    cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable.m<br>
<br>
Modified: cfe/trunk/lib/CodeGen/CGObjC.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=198715&r1=198714&r2=198715&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CGObjC.cpp?rev=198715&r1=<u></u>198714&r2=198715&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/CGObjC.<u></u>cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGObjC.<u></u>cpp Tue Jan  7 16:05:55 2014<br>
@@ -506,7 +506,8 @@ static llvm::Value *emitARCRetainLoadOfS<br>
 /// its pointer, name, and types registered in the class struture.<br>
 void CodeGenFunction::<u></u>GenerateObjCMethod(const ObjCMethodDecl *OMD) {<br>
   StartObjCMethod(OMD, OMD->getClassInterface(), OMD->getLocStart());<br>
-  EmitStmt(OMD->getBody());<br>
+  assert(isa<CompoundStmt>(OMD-><u></u>getBody()));<br>
+  EmitCompoundStmtWithoutScope(*<u></u>cast<CompoundStmt>(OMD-><u></u>getBody()));<br>
   FinishFunction(OMD-><u></u>getBodyRBrace());<br>
 }<br>
<br>
<br>
Modified: cfe/trunk/test/CodeGenCXX/<u></u>linetable-cleanup.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/linetable-cleanup.cpp?rev=198715&r1=198714&r2=198715&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/test/<u></u>CodeGenCXX/linetable-cleanup.<u></u>cpp?rev=198715&r1=198714&r2=<u></u>198715&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/test/CodeGenCXX/<u></u>linetable-cleanup.cpp (original)<br>
+++ cfe/trunk/test/CodeGenCXX/<u></u>linetable-cleanup.cpp Tue Jan  7 16:05:55 2014<br>
@@ -46,12 +46,14 @@ void bar()<br>
 void baz()<br>
 {<br>
   if (!foo())<br>
-    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
+    // CHECK: ![[SCOPE1:.*]] = metadata !{{{.*}}, i32 [[@LINE-1]], {{.*}}} ; [ DW_TAG_lexical_block ]<br>
+    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[SCOPE1]], null}<br>
     return;<br>
<br>
   if (foo()) {<br>
     // no cleanup<br>
-    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
+    // CHECK: {{.*}} = metadata !{i32 [[@LINE+2]], i32 0, metadata ![[SCOPE2:.*]], null}<br>
+    // CHECK: ![[SCOPE2]] = metadata !{{{.*}}, i32 [[@LINE-3]], {{.*}}} ; [ DW_TAG_lexical_block ]<br>
     return;<br>
   }<br>
   // CHECK: ![[RETBAZ]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
<br>
Modified: cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable-autorelease.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m?rev=198715&r1=198714&r2=198715&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/test/<u></u>CodeGenObjC/arc-linetable-<u></u>autorelease.m?rev=198715&r1=<u></u>198714&r2=198715&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable-autorelease.m (original)<br>
+++ cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable-autorelease.m Tue Jan  7 16:05:55 2014<br>
@@ -29,12 +29,11 @@ NSRect NSMakeRect(CGFloat x, CGFloat y,<br>
   CGFloat pattern[2];<br>
   // CHECK: define {{.*}}_<u></u>createBezierPathWithWidth<br>
   // CHECK: load {{.*}} %path, align {{.*}}, !dbg ![[RET:[0-9]+]]<br>
-  // CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC1:[0-9]+]]<br>
-  // CHECK: call {{.*}} @objc_autoreleaseReturnValue{{<u></u>.*}} !dbg ![[ARC2:[0-9]+]]<br>
-  // CHECK: ret {{.*}} !dbg ![[ARC2]]<br>
+  // CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC:[0-9]+]]<br>
+  // CHECK: call {{.*}} @objc_autoreleaseReturnValue{{<u></u>.*}} !dbg ![[ARC]]<br>
+  // CHECK: ret {{.*}} !dbg ![[ARC]]<br>
   // CHECK: ![[RET]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
   return path;<br>
-  // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+2]], i32 0, metadata !{{.*}}, null}<br>
-  // CHECK: ![[ARC2]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
+  // CHECK: ![[ARC]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
 }<br>
 @end<br>
<br>
Modified: cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable.m<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable.m?rev=198715&r1=198714&r2=198715&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/test/<u></u>CodeGenObjC/arc-linetable.m?<u></u>rev=198715&r1=198714&r2=<u></u>198715&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable.m (original)<br>
+++ cfe/trunk/test/CodeGenObjC/<u></u>arc-linetable.m Tue Jan  7 16:05:55 2014<br>
@@ -47,8 +47,10 @@<br>
<br>
 @implementation AppDelegate : NSObject<br>
<br>
+// CHECK: ![[TESTNOSIDEEFFECT:.*]] = {{.*}}[ DW_TAG_subprogram ] [line [[@LINE+1]]] [local] [def] [-[AppDelegate testNoSideEffect:]]<br>
 - (int)testNoSideEffect:(<u></u>NSString *)foo {<br>
-  // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
+  int x = 1;<br>
+  // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[TESTNOSIDEEFFECT]], null}<br>
   return 1; // Return expression<br>
   // CHECK: ![[RET1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}<br>
 }           // Cleanup + Ret<br>
<br>
<br>
______________________________<u></u>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-commits</a><br>
</blockquote>