Using precompiled headers with libtooling?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Using precompiled headers with libtooling?

Roman Popov via cfe-dev

Hello,

 

We are using clang libtooling, and we think about enabling precompiled headers to speed-up our processing, but I’ve not found any document about that, so I have a few questions:

  • If we do so, will the content of the pch be visited with a RecursiveASTVisitor? With an ast matcher?
  • Will code location inside the PCH refer to the files that generated the pch?
  • Are there any other caveat?
  • Is there a tool to generate the pch with an interface similar to ClangTool, or should I just spawn a sub process the create the pch before starting the tool?

 

Thank you for your help,

 

---

Loïc Joly

 


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
Reply | Threaded
Open this post in threaded view
|

Re: Using precompiled headers with libtooling?

Roman Popov via cfe-dev

Hello,

 

I’ve made some progress in that direction, but I’m not done yet, and I have some hard time putting it all together, so I’m thinking I may be missing something obvious. So I’d like to describe what I’ve done so far:

 

  • I gave up using a ClangTool to run the preprocessing step, it just did not work. Instead, I’m creating a CompilerInvocation and pass it to a custom FrontendActionFactory that returns a GeneratePCHAction.
  • This sort of works (assuming I pass to the CompilerInvocation all the arguments equivalent to the ones I pass to the ClangTool that I use later). But then, when I have any error in the PCH code, the PCH is not saved on disk (for what I do, I really don’t mind having incomplete results, so I’d like to save it anyway)
  • So I created a new action that inherits from GeneratePCHAction but in CreateASTConsumer has the same code as its base class, but uses true instead of false for the argument AllowASTWithErrors of the PCHGenerator constructor. But still, the PCH file does not get generated in case of errors.

 

Do you think I’m going in the right direction? Do you have any idea what I should do to achieve my goal?

 

 

I’ve got another question: Many tooling function have a shared_ptr<PCHContainerOperations> argument. Does it mean I could use a PCH in memory without ever saving it to the disk, or is if just to be used for modules, as the documentation seems to imply? Do you have any hint about how this can be used?

 

 

Thank you!

 

---

Loïc Joly

 

 

De : cfe-dev [mailto:[hidden email]] De la part de Loïc Joly via cfe-dev
Envoyé : lundi 7 août 2017 20:39
À : [hidden email]
Objet : [cfe-dev] Using precompiled headers with libtooling?

 

Hello,

 

We are using clang libtooling, and we think about enabling precompiled headers to speed-up our processing, but I’ve not found any document about that, so I have a few questions:

  • If we do so, will the content of the pch be visited with a RecursiveASTVisitor? With an ast matcher?
  • Will code location inside the PCH refer to the files that generated the pch?
  • Are there any other caveat?
  • Is there a tool to generate the pch with an interface similar to ClangTool, or should I just spawn a sub process the create the pch before starting the tool?

 

Thank you for your help,

 

---

Loïc Joly

 


_______________________________________________
cfe-dev mailing list
[hidden email]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev