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 <[email protected]> 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
>> [email protected]
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to