[cfe-dev] Modifying an AST and Sema's dependency on an AST consumer

steve naroff snaroff at apple.com
Thu Dec 4 08:42:34 PST 2008


On Dec 4, 2008, at 11:27 AM, Ted Kremenek wrote:

> On Dec 4, 2008, at 7:26 AM, steve naroff <snaroff at apple.com> wrote:
>
>>
>> On Dec 4, 2008, at 9:54 AM, Lukasz Janyst wrote:
>>
>>> On Wed, Dec 3, 2008 at 3:26 PM, Lukasz Janyst <ljanyst at cern.ch>  
>>> wrote:
>>>> tables in it. Yet still I seem to experience some strange memory
>>>> issues when the modified TU gets processed by the CodeGen.
>>>
>>> I sorted it out. The problem was the object ownership. It seemed
>>> natural to me that the identifier table should be owned by the
>>> ASTContext, but it is owned by the Preprocessor object which I  
>>> deleted
>>> after I was done with the parsing.
>>>
>>
>> The IdentifierTable should be owned by ASTContext (as you expected).
>>
>> This is a bug (that I thought we fixed a long time ago...apparently
>> not).
>>
>> snaroff
>
> I don't think this is a bug.  See my other email.

Hey Ted,

I read your email but I'm still not convinced there isn't an issue  
here (though it certainly isn't critical to deal with now).

No doubt that running the preprocessor standalone will require an  
IdentifierTable.

When a preprocessor is being run in a larger context (where AST's are  
being generated), it makes more sense (to me) if the "larger context"  
owns the IdentifierTable. In this instance, ASTContext.

 From my perspective, an instance of the Preprocessor is transient,  
while ASTContext is more long-lived.

snaroff





More information about the cfe-dev mailing list