> On Apr 29, 2015, at 11:15 AM, David Blaikie <[email protected]> wrote:
> 
> 
> 
> On Wed, Apr 29, 2015 at 10:48 AM, Adrian Prantl <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>> On Apr 29, 2015, at 10:04 AM, Eric Christopher <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 
>> 
>> On Wed, Apr 29, 2015 at 9:58 AM Eric Christopher <[email protected] 
>> <mailto:[email protected]>> wrote:
>> On Wed, Apr 29, 2015 at 8:20 AM Adrian Prantl <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> > On Apr 28, 2015, at 6:26 PM, David Blaikie <[email protected] 
>> > <mailto:[email protected]>> wrote:
>> 
>> > Could you revert & I'll look into getting you a reduced test 
>> > case/demonstration of the issue? (can you run GDB 7.5? Perhaps a simple 
>> > test case would demonstrate the issue if you're lucky, otherwise I can 
>> > reduce one from the failing test case)
>> 
>> I reverted the commit in r236110. I probably won’t need a reduction — my 
>> guess from the log is that gdb expects a local variable to be present.
>> 
>> My suggestion is to emit local artificial shadow variables and then weaken 
>> the Verifier to not verify artificial variables. In a next step, we could 
>> use the new debugger tuning target feature to make the artificial local 
>> variables and the weakened verifier a gdb-specific behavior, file a bug 
>> against gdb, and eventually remove it altogether.
>> 
>> 
>> FWIW I don't want to use the "tuning" parameters to also affect correctness.
>> 
>> OK. Dave and I debated this a little in person, here's a proposal:
>> 
>> by default it will have the gdb specific behavior, but if you're tuning for 
>> lldb (or any other debugger I guess?) it won't be there.
>> 
>> Thoughts?
> 
> I think it’s a fair assumption that many debuggers won’t deal very well with 
> anonymous local variables, from that perspective this is the right decision.
> (Nitpick: If it is only needed for GDB then it doesn’t seem right to make it 
> the global default, because tuning for gdb will be the default on all 
> non-lldb/sce platforms anyway.)
> 
> I really want to push towards making the debug info handling stricter, so I’m 
> unhappy about having the frontend willfully emit broken IR at the moment. 
> But, I also haven’t found a way to emit the local shadow variables in a way 
> that makes the verifier happy and isn’t entirely gross in other respects. 
> I’ll keep looking for a better way to emit this without having to relax the 
> verifier.
> 
> Im curious though - why is this harder to support than, say, ASan's habit of 
> smooshing all the variables into a single alloca? They seem rather similar to 
> me, but I'm probably missing something.

When ASan puts variables int the middle of a large alloca it creates a pointer 
to the variable’s storage deep inside the alloca. It then emits a dbg.declare 
describing the pointer (with the correct type) rather than the alloca so it 
does never emit illegal IR.

-- adrian
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to