[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