[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