GCC Middle and Back End API Reference
diagnostic_option_classifier Class Reference

#include <diagnostic.h>

Collaboration diagram for diagnostic_option_classifier:

Data Structures

struct  diagnostic_classification_change_t
 

Public Member Functions

void init (int n_opts)
 
void fini ()
 
void push ()
 
void pop (location_t where)
 
bool option_unspecified_p (diagnostic_option_id option_id) const
 
diagnostic_t get_current_override (diagnostic_option_id option_id) const
 
diagnostic_t classify_diagnostic (const diagnostic_context *context, diagnostic_option_id option_id, diagnostic_t new_kind, location_t where)
 
diagnostic_t update_effective_level_from_pragmas (diagnostic_info *diagnostic) const
 
int pch_save (FILE *)
 
int pch_restore (FILE *)
 

Private Attributes

int m_n_opts
 
diagnostic_tm_classify_diagnostic
 
vec< diagnostic_classification_change_tm_classification_history
 
vec< int > m_push_list
 

Detailed Description

A stack of sets of classifications: each entry in the stack is
a mapping from option index to diagnostic severity that can be changed
via pragmas.  The stack can be pushed and popped.   

Member Function Documentation

◆ classify_diagnostic()

diagnostic_t diagnostic_option_classifier::classify_diagnostic ( const diagnostic_context * context,
diagnostic_option_id option_id,
diagnostic_t new_kind,
location_t where )
Interface to specify diagnostic kind overrides.  Returns the
previous setting, or DK_UNSPECIFIED if the parameters are out of
range.  If OPTION_ID is zero, the new setting is for all the
diagnostics.   

References DK_ANY, DK_LAST_DIAGNOSTIC_KIND, FOR_EACH_VEC_ELT_REVERSE, i, diagnostic_option_classifier::diagnostic_classification_change_t::kind, m_classification_history, m_classify_diagnostic, diagnostic_option_id::m_idx, m_n_opts, diagnostic_option_classifier::diagnostic_classification_change_t::option, diagnostic_context::option_enabled_p(), and UNKNOWN_LOCATION.

Referenced by diagnostic_context::classify_diagnostic().

◆ fini()

void diagnostic_option_classifier::fini ( )

◆ get_current_override()

diagnostic_t diagnostic_option_classifier::get_current_override ( diagnostic_option_id option_id) const
inline

◆ init()

void diagnostic_option_classifier::init ( int n_opts)

◆ option_unspecified_p()

bool diagnostic_option_classifier::option_unspecified_p ( diagnostic_option_id option_id) const
inline

◆ pch_restore()

int diagnostic_option_classifier::pch_restore ( FILE * f)
Read the diagnostic_option_classifier state from F for PCH
read.  Returns 0 on success, -1 on error.   

References gcc_checking_assert, m_classification_history, and m_push_list.

Referenced by diagnostic_context::pch_restore().

◆ pch_save()

int diagnostic_option_classifier::pch_save ( FILE * f)
Save the diagnostic_option_classifier state to F for PCH
output.  Returns 0 on success, -1 on error.   

References m_classification_history, and m_push_list.

Referenced by diagnostic_context::pch_save().

◆ pop()

void diagnostic_option_classifier::pop ( location_t where)
Restore the topmost classification set off the stack.  If the stack
is empty, revert to the state based on command line parameters.   

References DK_POP, m_classification_history, and m_push_list.

Referenced by diagnostic_context::pop_diagnostics().

◆ push()

void diagnostic_option_classifier::push ( )
Save all diagnostic classifications in a stack.   

References m_classification_history, and m_push_list.

Referenced by diagnostic_context::push_diagnostics().

◆ update_effective_level_from_pragmas()

diagnostic_t diagnostic_option_classifier::update_effective_level_from_pragmas ( diagnostic_info * diagnostic) const
Update the kind of DIAGNOSTIC based on its location(s), including
any of those in its inlining stack, relative to any
  #pragma GCC diagnostic
directives recorded within this object.

Return the new kind of DIAGNOSTIC if it was updated, or DK_UNSPECIFIED
otherwise.   

References DK_POP, FOR_EACH_VEC_ELT_REVERSE, i, diagnostic_option_classifier::diagnostic_classification_change_t::kind, line_table, diagnostic_option_classifier::diagnostic_classification_change_t::location, m_classification_history, diagnostic_option_classifier::diagnostic_classification_change_t::option, and option().

Referenced by diagnostic_context::diagnostic_enabled().

Field Documentation

◆ m_classification_history

vec<diagnostic_classification_change_t> diagnostic_option_classifier::m_classification_history
private

◆ m_classify_diagnostic

diagnostic_t* diagnostic_option_classifier::m_classify_diagnostic
private

◆ m_n_opts

int diagnostic_option_classifier::m_n_opts
private

◆ m_push_list

vec<int> diagnostic_option_classifier::m_push_list
private

Referenced by fini(), init(), pch_restore(), pch_save(), pop(), and push().


The documentation for this class was generated from the following files: