[cfe-commits] r104422 - in /cfe/trunk/lib/CodeGen: CGExprAgg.cpp CGObjC.cpp CGObjCGNU.cpp CGObjCMac.cpp CGObjCRuntime.h CodeGenFunction.h
John McCall
rjmccall at apple.com
Sun May 23 12:29:20 PDT 2010
On May 23, 2010, at 11:24 AM, Douglas Gregor wrote:
>
> On May 23, 2010, at 10:38 AM, Fariborz Jahanian wrote:
>
>>
>> On May 22, 2010, at 3:18 PM, John McCall wrote:
>>
>>> On May 22, 2010, at 9:13 AM, Fariborz Jahanian wrote:
>>>> Wouldn't removing call to EmitFinalDestCopy change things in this
>>>> patch? This routine deals with GC API, as well as copying result to
>>>> DestPtr.
>>>
>>> Ugh, you're right. I believe I've restored the old behavior in a
>>> way that doesn't interfere with return-value behavior in C++.
>>>
>>> I have no idea how to reconcile the GC API with C++; we'll have to
>>> talk about this.
>>
>> Thanks. This was my main concern. This particular API was not being
>> invoked for ObjC++ case, my concern was
>> changing behavior for ObjC.
>
>
> Perhaps we should use the GC API for a separate copy only when dealing with POD types? Then we're only missing the GC calls for C++ types w/ interesting special member functions.
The test I implemented was "a record type with a trivial copy constructor and a trivial destructor and which satisfies hasObjectMember()". The trivial copy constructor check will need to change for C++0x, but so will every call to hasTrivialCopyConstructor(), I think.
Is there a document about the GC API anywhere? I'm sure it doesn't really consider ObjC++ at all, but I'd like to review the requirements anyway, just to see whether there's any earthly way we can support them in C++.
John.
More information about the cfe-commits
mailing list