r198699 - Debug info: Implement a cleaner version of r198461. For symmetry with

Adrian Prantl aprantl at apple.com
Tue Jan 7 13:54:13 PST 2014


On Jan 7, 2014, at 13:50, Eric Christopher <echristo at gmail.com> wrote:

> 
> On Tue Jan 07 2014 at 11:31:12 AM, Adrian Prantl <aprantl at apple.com> wrote:
> Author: adrian
> Date: Tue Jan  7 13:24:24 2014
> New Revision: 198699
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=198699&view=rev
> Log:
> Debug info: Implement a cleaner version of r198461. For symmetry with
> C and C++ don't emit an extra lexical scope for the compound statement
> that is the body of an Objective-C method.
> 
> rdar://problem/15010825
> 
> 
> Next time it would be good if you could revert the previous patch so that we only have to examine your current changes.

Sure, I can do that next time! Sorry for the extra confusion.
> 
> 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?

The previous patch added a couple of scoping-related tests to the C++ test cases that were not there originally, and they are still valid.

Modified: cfe/trunk/test/CodeGenCXX/linetable-cleanup.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/linetable-cleanup.cpp?rev=198461&r1=198460&r2=198461&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/linetable-cleanup.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/linetable-cleanup.cpp Fri Jan  3 17:34:30 2014
@@ -46,12 +46,14 @@ void bar()
void baz()
{
  if (!foo())
-    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
+    // CHECK: ![[SCOPE1:.*]] = metadata !{{{.*}}, i32 [[@LINE-1]], {{.*}}} ; [ DW_TAG_lexical_block ]
+    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata ![[SCOPE1]], null}
    return;

  if (foo()) {
    // no cleanup
-    // CHECK: {{.*}} = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}
+    // CHECK: {{.*}} = metadata !{i32 [[@LINE+2]], i32 0, metadata ![[SCOPE2:.*]], null}
+    // CHECK: ![[SCOPE2]] = metadata !{{{.*}}, i32 [[@LINE-3]], {{.*}}} ; [ DW_TAG_lexical_block ]
    return;
  }
  // CHECK: ![[RETBAZ]] = metadata !{i32 [[@LINE+1]], i32 0, metadata !{{.*}}, null}

It tests that the two return stmts are indeed in two different lexical scopes.

-- adrian



More information about the cfe-commits mailing list