This patch adds a base-class called TemplateInstantiationObserver which gets notified whenever a template instantiation is entered or exited during semantic analysis. This is a base class used to implement the template profiling and debugging tool called Templight (https://github.com/mikael-s-persson/templight).
The patch also makes a few more changes:
- ActiveTemplateInstantiation class is moved out of the Sema class (so it can be used with inclusion of Sema.h).
- CreateFrontendAction function in front-end utilities is given external linkage (not longer a hidden static function).
- TemplateInstObserverChain data member added to Sema class to hold the list of template-inst observers.
- Notifications to the template-inst observer are added at the key places where templates are instantiated.
I believe this patch should be fairly uncontroversial as the changes are very limited. I tried to keep them minimal, it does not add any end-user feature or bug-fix, and the impact to the main-line code is negligible. AFAIK, all LLVM / Clang guidelines have been respected.
The patch was made against r219658.
Do we want to keep the templight name? I am ok with it, but I wonder if something like dump template instantiation information, or dump template profile information would be more descriptive to the newcomers.