On Oct 5, 2011, at 11:22 PM, Eric Christopher wrote:

> 
> On Oct 5, 2011, at 5:49 PM, Fariborz Jahanian wrote:
> 
>> 
>> On Oct 5, 2011, at 5:31 PM, Eric Christopher wrote:
>> 
>>> Author: echristo
>>> Date: Wed Oct  5 19:31:18 2011
>>> New Revision: 141261
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=141261&view=rev
>>> Log:
>>> When constructing debug information for synthesized variables for the
>>> non-fragile ABI we may not be able to lay out the type and the debugger
>>> would ignore us even if we did put in the offset. Go ahead and just
>>> put any value there and don't look up the offset since it may not exist.
>> 
>> Ivar will be synthesize as an ordinary ivar and added to the list of ivars 
>> for the class.
>> It has both a type and an offset then. Why does debgger ignore it?
>> Also, in your test, why do you declare subclass
>> Foo_ and its implementation? Does it play a role here?
> 
> The synthesized variable is coming in via an ObjCInterfaceDecl which, afaict, 
> doesn't
> have a layout in the non-fragile ABI that can represent a layout. We're 
> tripping the
> assert when trying to get the offset of the synthesized ivar.

Here is the meta-data to show that synthesized variable is no different than 
none-synthesized.
I used your test case but added a user declared ivar "IAddedThisIvar" to show 
this point.

l_OBJC_$_INSTANCE_VARIABLES_Foo:
        .long   32                      ## 0x20
        .long   2                       ## 0x2
        .quad   _OBJC_IVAR_$_Foo.IAddedThisIvar
        .quad   L_OBJC_METH_VAR_NAME_4
        .quad   L_OBJC_METH_VAR_TYPE_5
        .long   3                       ## 0x3
        .long   8                       ## 0x8
        .quad   _OBJC_IVAR_$_Foo._window
        .quad   L_OBJC_METH_VAR_NAME_6
        .quad   L_OBJC_METH_VAR_TYPE_5
        .long   3                       ## 0x3
        .long   8                       ## 0x8



> 
> The debugger ignores it because it has to reconstruct the layout information 
> from the
> global variable offsets anyhow.
> 
> The testcase is the reduced bit of a testcase I'd gotten. I can double check 
> whether
> or not we need the subclass.
> 
> -eric

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

Reply via email to