Changes are in r172639 ~Aaron
On Wed, Jan 16, 2013 at 1:07 PM, Aaron Ballman <[email protected]> wrote: > RAII it is then -- once I've made the changes and committed, I'll post > the rev here and you can review after commit if you'd like. Thanks > for the tenacity! > > ~Aaron > > On Wed, Jan 16, 2013 at 1:04 PM, Dmitri Gribenko <[email protected]> wrote: >> On Wed, Jan 16, 2013 at 7:52 PM, Aaron Ballman <[email protected]> >> wrote: >>> On Wed, Jan 16, 2013 at 10:33 AM, Dmitri Gribenko <[email protected]> >>> wrote: >>>> On Wed, Jan 16, 2013 at 3:15 PM, Aaron Ballman <[email protected]> >>>> 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 <[email protected]>*/ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
