<br><div>On Tue Jan 07 2014 at 11:31:12 AM, 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 13:24:24 2014<br>
New Revision: 198699<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=198699&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=198699&view=rev</a><br>
Log:<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>
rdar://problem/15010825<br>
<br></blockquote><div><br></div><div>Next time it would be good if you could revert the previous patch so that we only have to examine your current changes.</div><div><br></div><div>I seem to recall your previous patch changed some C++ testcases and that your new patch hasn't changed them back. What's going on there? It may make sense to revert this and your previous patch and reapply with just the fixes needed for your objective c problem?</div>
<div><br></div><div>-eric</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Modified:<br>
    cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.cpp<br>
    cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.h<br>
    cfe/trunk/lib/CodeGen/CGObjC.<u></u>cpp<br>
    cfe/trunk/lib/CodeGen/CGStmt.<u></u>cpp<br>
    cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.cpp<br>
    cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.h<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/<u></u>CGDebugInfo.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.cpp?rev=198699&r1=<u></u>198698&r2=198699&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.cpp Tue Jan  7 13:24:24 2014<br>
@@ -2537,8 +2537,7 @@ void CGDebugInfo::<u></u>EmitFunctionStart(Glob<br>
 /// information in the source file. If the location is invalid, the<br>
 /// previous location will be reused.<br>
 void CGDebugInfo::EmitLocation(<u></u>CGBuilderTy &Builder, SourceLocation Loc,<br>
-                               bool ForceColumnInfo,<br>
-                               llvm::MDNode *ForceScope) {<br>
+                               bool ForceColumnInfo) {<br>
   // Update our current location<br>
   setLocation(Loc);<br>
<br>
@@ -2557,7 +2556,7 @@ void CGDebugInfo::EmitLocation(<u></u>CGBuilder<br>
   // Update last state.<br>
   PrevLoc = CurLoc;<br>
<br>
-  llvm::MDNode *Scope = ForceScope ? ForceScope : &*LexicalBlockStack.back();<br>
+  llvm::MDNode *Scope = LexicalBlockStack.back();<br>
   Builder.<u></u>SetCurrentDebugLocation(llvm::<u></u>DebugLoc::get<br>
                                   (getLineNumber(CurLoc),<br>
                                    getColumnNumber(CurLoc, ForceColumnInfo),<br>
<br>
Modified: cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.h?rev=198699&r1=<u></u>198698&r2=198699&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.h (original)<br>
+++ cfe/trunk/lib/CodeGen/<u></u>CGDebugInfo.h Tue Jan  7 13:24:24 2014<br>
@@ -211,17 +211,13 @@ public:<br>
   /// getLocation - Return the current source location.<br>
   SourceLocation getLocation() const { return CurLoc; }<br>
<br>
-  /// getScope() - Return the current scope.<br>
-  llvm::MDNode *getScope() const { return LexicalBlockStack.back(); }<br>
-<br>
   /// EmitLocation - Emit metadata to indicate a change in line/column<br>
   /// information in the source file.<br>
   /// \param ForceColumnInfo  Assume DebugColumnInfo option is true.<br>
   /// \param ForceScope       Force the location to be in a specific lexical<br>
   ///                         scope rather than the top of LexicalBlockStack.<br>
   void EmitLocation(CGBuilderTy &Builder, SourceLocation Loc,<br>
-                    bool ForceColumnInfo = false,<br>
-                    llvm::MDNode *ForceScope = 0);<br>
+                    bool ForceColumnInfo = false);<br>
<br>
   /// EmitFunctionStart - Emit a call to llvm.dbg.function.start to indicate<br>
   /// start of a new function.<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=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CGObjC.cpp?rev=198699&r1=<u></u>198698&r2=198699&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 13:24:24 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/lib/CodeGen/CGStmt.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGStmt.cpp?rev=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CGStmt.cpp?rev=198699&r1=<u></u>198698&r2=198699&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/CGStmt.<u></u>cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/CGStmt.<u></u>cpp Tue Jan  7 13:24:24 2014<br>
@@ -37,7 +37,7 @@ void CodeGenFunction::<u></u>EmitStopPoint(cons<br>
     Loc = S->getLocStart();<br>
     DI->EmitLocation(Builder, Loc);<br>
<br>
-    LastStopPoint = std::make_pair(Loc, DI->getScope());<br>
+    LastStopPoint = Loc;<br>
   }<br>
 }<br>
<br>
<br>
Modified: cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.cpp?rev=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.cpp?rev=<u></u>198699&r1=198698&r2=198699&<u></u>view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.cpp (original)<br>
+++ cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.cpp Tue Jan  7 13:24:24 2014<br>
@@ -209,10 +209,9 @@ void CodeGenFunction::<u></u>FinishFunction(Sou<br>
   // all will be fine.<br>
   if (CGDebugInfo *DI = getDebugInfo()) {<br>
     if (OnlySimpleReturnStmts)<br>
-      DI->EmitLocation(Builder, LastStopPoint.first,<br>
-                       false, LastStopPoint.second);<br>
+      DI->EmitLocation(Builder, LastStopPoint, false);<br>
     else<br>
-      DI->EmitLocation(Builder, EndLoc, false, LastStopPoint.second);<br>
+      DI->EmitLocation(Builder, EndLoc, false);<br>
   }<br>
<br>
   // Pop any cleanups that might have been associated with the<br>
@@ -229,7 +228,7 @@ void CodeGenFunction::<u></u>FinishFunction(Sou<br>
<br>
     if (CGDebugInfo *DI = getDebugInfo())<br>
       if (OnlySimpleReturnStmts)<br>
-        DI->EmitLocation(Builder, EndLoc, false, LastStopPoint.second);<br>
+        DI->EmitLocation(Builder, EndLoc, false);<br>
   }<br>
<br>
   // Emit function epilog (to return).<br>
<br>
Modified: cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.h?rev=198699&<u></u>r1=198698&r2=198699&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.h (original)<br>
+++ cfe/trunk/lib/CodeGen/<u></u>CodeGenFunction.h Tue Jan  7 13:24:24 2014<br>
@@ -877,7 +877,7 @@ private:<br>
   unsigned NumSimpleReturnExprs;<br>
<br>
   /// The last regular (non-return) debug location (breakpoint) in the function.<br>
-  std::pair<SourceLocation, llvm::MDNode*> LastStopPoint;<br>
+  SourceLocation LastStopPoint;<br>
<br>
 public:<br>
   /// A scope within which we are constructing the fields of an object which<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=198699&r1=198698&r2=198699&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=198699&r1=<u></u>198698&r2=198699&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 13:24:24 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=198699&r1=198698&r2=198699&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/test/<u></u>CodeGenObjC/arc-linetable.m?<u></u>rev=198699&r1=198698&r2=<u></u>198699&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 13:24:24 2014<br>
@@ -49,9 +49,8 @@<br>
<br>
 // CHECK: ![[TESTNOSIDEEFFECT:.*]] = {{.*}}[ DW_TAG_subprogram ] [line [[@LINE+1]]] [local] [def] [-[AppDelegate testNoSideEffect:]]<br>
 - (int)testNoSideEffect:(<u></u>NSString *)foo {<br>
-  // CHECK: ![[COMPOUND_STMT:.*]] = metadata !{i32 786443, metadata !{{.*}}, metadata ![[TESTNOSIDEEFFECT]], i32 [[@LINE-1]], i32 0, i32 0} ; [ DW_TAG_lexical_block ]<br>
   int x = 1;<br>
-  // CHECK: ![[ARC1]] = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[COMPOUND_STMT]], null}<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>