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