[cfe-commits] [PATCH] Disallow __has_include and __has_include_next outside of preprocessor directives
Dmitri Gribenko
gribozavr at gmail.com
Wed Jan 16 10:04:08 PST 2013
On Wed, Jan 16, 2013 at 7:52 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
> On Wed, Jan 16, 2013 at 10:33 AM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
>> On Wed, Jan 16, 2013 at 3:15 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>>> This patch moves the logic around slightly to handle macros better;
>>> instead of relying on the PP Lexer, we track the information in the PP
>>> itself so that is is always available. I've expanded the test cases
>>> to cover macros more fully.
>>
>> void Preprocessor::HandleIfDirective(Token &IfToken,
>> bool ReadAnyTokensBeforeDirective) {
>> + ParsingPreprocessorDirective = true;
>> ++NumIf;
>>
>> // Parse and evaluate the conditional expression.
>> @@ -2101,6 +2102,7 @@
>> SkipExcludedConditionalBlock(IfToken.getLocation(), /*Foundnonskip*/false,
>> /*FoundElse*/false);
>> }
>> + ParsingPreprocessorDirective = false;
>> }
>>
>> We have llvm/Support/SaveAndRestore.h to simplify this.
>
> That's neat, I didn't notice we had that. However, using that would
> mean I couldn't use a bit-field for the property either (due to
> requiring a reference). So the question I have is: which is "better"?
> Given that we already have several other boolean bitfields, I am on
> the fence.
The size of the preprocessor object should not be a big issue, so I
would go with RAII.
Dmitri
--
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
More information about the cfe-commits
mailing list