[PATCH] Do not attach a debug location to code inserted by ARC / API for disabling DebugLocations
Eric Christopher
echristo at gmail.com
Mon Apr 8 13:23:19 PDT 2013
So, since you didn't respond to the rest, these are the similar bugs I
was speaking about:
http://llvm.org/bugs/show_bug.cgi?id=14498
http://llvm.org/bugs/show_bug.cgi?id=14580
with a little bit due to:
http://llvm.org/bugs/show_bug.cgi?id=14610
http://llvm.org/bugs/show_bug.cgi?id=14473
Before we go forward with this I'd like to discuss the general
applicability here for line information.
Few notes on the patch:
DI->EmitLocation(Builder,
- cast<CompoundStmt>(blockDecl->getBody())->getRBracLoc());
+ cast<CompoundStmt>(blockDecl->getBody())->getRBracLoc());
Separate cleanup if possible. Thanks.
+// This is to ensure that we don't generate bogus debug locations for
code inserted by ARC.
+// CHECK-NOT: bitcast {{.*}}, !dbg
I'm all for short and simple tests, but this might be a bit obscure :)
+- (int)testFoo:(NSString *)foo {
+ // When you stop at this breakpoint, try to `po foo`. It will be nil.
+ return 1;
+
+ // When you stop at *this* breakpoint, `po foo` works. Note that
this one gets
+ // hit before the other one. This isn't what most developers expect.
+}
The comments are obviously from the testcase you got, can you instead
annotate it with something that's a bit more applicable to the debug
code gen sort of things?
+ /// \brief Temporarily suppress DebugLocations from being attached
+ /// to emitted instructions, until the next call to
+ /// SetCurrentDebugLocation() or EnableDebugLocations(). Use this
+ /// if you want an instruction to be counted towards the prologue or
+ /// if there is no useful source location.
Hrm why not assert that it hasn't been updated in the meantime?
-eric
On Mon, Apr 8, 2013 at 11:58 AM, Adrian Prantl <aprantl at apple.com> wrote:
>
> On Apr 8, 2013, at 11:06 AM, Eric Christopher <echristo at gmail.com> wrote:
>
>> On Mon, Apr 8, 2013 at 10:40 AM, John McCall <rjmccall at apple.com> wrote:
>>> On Apr 5, 2013, at 5:22 PM, Adrian Prantl <aprantl at apple.com> wrote:
>>>> Patch for review, mostly for the IRBuilder::DisableDebugLocations() part.
>>>>
>>>> Do not attach a debug location to code inserted by ARC --
>>>> it would create a spurious line table entry at the closing } of the scope.
>>>
>>> Is this a problem? Just that we don't want "next" to stop here?
>>>
>>
>> Pretty much. It's analogous to the same when we're looking at
>> cleanups, etc. I think this is going into the realm of "opinions on
>> behavior" here. There are a couple of bugs off of PR14330 that are
>> similar here where the gdb testsuite is checking to see where "next"
>> takes you. It's more interesting when you're looking at where next
>> takes you in something like:
>>
>> foo (bar(), baz())
>>
>> and you want to make sure that when you "next" out of baz that it
>> leaves you on the same line as foo.
>>
>> For the patch, while I'm not sure we want it, I'd like to see how the
>> functionality plays out with other similar constructs in addition to
>> just arc to see?
>
> In the CFE patch I submitted, I'm also using it to make debugging-related block setup code part of the prologue. But right now I only got the ARC and the Blocks example.
>
> -- adrian
More information about the cfe-commits
mailing list