[cfe-dev] Patch to allow comment translators implementation

Douglas Gregor dgregor at apple.com
Thu Jan 28 15:51:32 PST 2010


On Jan 28, 2010, at 2:18 PM, Abramo Bagnara wrote:

> Il 27/01/2010 22:48, Chris Lattner ha scritto:
>>>> 
>>>> 1) do not call comment handlers when skipping excluded conditional block
>>>> 
>>>> 2) have a way inside comment handlers to know that we are inside an
>>>> excluded conditional block (so to avoid to call EnterTokenStream)
>>>> 
>>>> I think that 2) is better as it is more flexyble.
>>> 
>>> I've not yet heard anything from you, what do you think is the proper
>>> way to fix the problem above?
>> 
>> Hi Abramo,
>> 
>> I'm sorry for the delay.  I think that #1 is the best approach.  Comment handles should not be invoked on things in #if 0 blocks, because #if 0 blocks should be completely skipped according to the rules of the preprocessor: not doing this would invalidate the "include once" optimization that is applied to files wrapped in the "#ifndef FOO_H / #define FOO_H ... #endif" idiom.
>> 
>> In short, I think that #1 is the right fix.
> 
> I've attached a (trivial) patch to do that.
> 
> However in his message, some minutes ago Douglas wrote:
> 
>>> We have some alternative way to cope with this problem:
>>>> 
>>>> 1) make SkipExcludedConditionalBlock to consume also the tokens from
>>>> CurTokenLexer
>> This seems like the right approach to me. 
> 
> This was my original choice that Chris thought was inappropriate and he
> removed that part of my patch in his commit.
> 
> Personally I've no strong preference between a choice or the other,
> however I resume here the benefits I see for the two approaches:
> 
> Chris method (avoid to call comment handler when skipping):
> 
> - performance (we don't have to check from which lexer we are currently
> reading the tokens in SkipExcludedConditionalBlock)

Chris has far more expertise in the preprocessor than I; go with the Chris method. (I missed his e-mail).

	- Doug



More information about the cfe-dev mailing list