[PATCH] Allow compiler invocation to have a previously set Preprocessor and ASTContext

Pete Cooper peter_cooper at apple.com
Thu Sep 19 11:45:09 PDT 2013


Hi Neil

This looks like you’re just making Preprocessor and ASTContext behave like FileManager and SourceManager already do. That is, clang already has this:


  if (!CI.hasFileManager())
    CI.createFileManager();
  if (!CI.hasSourceManager())
    CI.createSourceManager(CI.getFileManager());

I assume you don’t have commit access.  I’m happy to commit this change if no-one has any objections.

Thanks,
Pete
On Sep 13, 2013, at 1:59 AM, Neil Henning <llvm at neil-henning.co.uk> wrote:

> There have been no comments/concerns raised, so how can I get this committed to trunk?
> 
> Thanks for your help,
> -Neil Henning.
> 
> On 11/09/2013 10:26, Neil Henning wrote:
>> CompilerInvocation can have a previously set FileManager and SourceManager, but not a Preprocessor or ASTContext. This stops Clang drivers from being able to declare their own Preprocessor and ASTContext before calling using FrontendAction's BeginSourceFile to compile. 
>> 
>> This patch allows a Preprocessor or ASTContext to previously have been set. 
>> 
>> Any comments would be appreciated, 
>> -Neil Henning. 
>> 
>> Patch (also attached); 
>>> Index: lib/Frontend/FrontendAction.cpp 
>>> =================================================================== 
>>> --- lib/Frontend/FrontendAction.cpp    (revision 190499) 
>>> +++ lib/Frontend/FrontendAction.cpp    (working copy) 
>>> @@ -265,7 +265,8 @@ 
>>>    } 
>>> 
>>>    // Set up the preprocessor. 
>>> -  CI.createPreprocessor(); 
>>> +  if(!CI.hasPreprocessor()) 
>>> +    CI.createPreprocessor(); 
>>> 
>>>    // Inform the diagnostic client we are processing a source file. 
>>>    CI.getDiagnosticClient().BeginSourceFile(CI.getLangOpts(), 
>>> @@ -279,7 +280,8 @@ 
>>>    // Create the AST context and consumer unless this is a preprocessor only 
>>>    // action. 
>>>    if (!usesPreprocessorOnly()) { 
>>> -    CI.createASTContext(); 
>>> +    if(!CI.hasASTContext()) 
>>> +      CI.createASTContext(); 
>>> 
>>>      OwningPtr<ASTConsumer> Consumer( 
>>>                                     CreateWrappedASTConsumer(CI, InputFile)); 
>> 
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130919/c1c146d7/attachment.html>


More information about the cfe-commits mailing list