[LLVMdev] Out-of-source subclassses vs. LLVM's RTTI system

Tobias Grosser tobias at grosser.es
Wed Jun 24 15:34:26 PDT 2015


On 06/24/2015 07:17 PM, Christian Convey wrote:
> Actually, I see an additional problem as well.  Even if I did manage to
> create my own out-of-source subclass of DiagnosticInfoOptimizationBase,
> there's still the question of how it would handle "Remark" severity.
>
> To be consistent with the rest of the diagnostic classes, my subclass's
> /isEnabled /method should probably consult the
> /PassRemarksAnalysisOptLoc/ object when handling a message with severity
> = "remark".  Unfortunately the /PassRemarksAnalysisOptLoc/ object has
> static linkage, so my code can't easily access it.
>
> The only way I can think to query it is to creaet a throw-away instance
> of some subclass of /DiagnosticInfoOptimizationBase/, and to provide
> that dummy's constructor with the same pass name that was provided to my
> class's constructor.  Then I could call that dummy instance's
> "isEnabled" method to find out whether or not my own code should emit
> the message.
>
> Unless someone has a cleaner way to do this, I think I'll just accept
> that the DiagnosticInfo stuff isn't designed for my use case, and move on.

Sorry, I am a little in a rush, but did you see the 
getNextAvailablePluginDiagnosticKind() method. This should allow you to 
define your own DiagnosticKinds. I am not sure if this is sufficient for 
you, but in general the diagnostic infrastructure is supposed to be 
useable from plugins. It may happen that some features don't work 
currently, but I don't see a reason why we would not want to add/expose 
missing functionality in case the need arises.

Best,
Tobias



More information about the llvm-dev mailing list