(root)/
gcc-13.2.0/
gcc/
tree-diagnostic.h
       1  /* Various declarations for language-independent diagnostics
       2     subroutines that are only for use in the compilers proper and not
       3     the driver or other programs.
       4     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       5  
       6  This file is part of GCC.
       7  
       8  GCC is free software; you can redistribute it and/or modify it under
       9  the terms of the GNU General Public License as published by the Free
      10  Software Foundation; either version 3, or (at your option) any later
      11  version.
      12  
      13  GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      14  WARRANTY; without even the implied warranty of MERCHANTABILITY or
      15  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      16  for more details.
      17  
      18  You should have received a copy of the GNU General Public License
      19  along with GCC; see the file COPYING3.  If not see
      20  <http://www.gnu.org/licenses/>.  */
      21  
      22  #ifndef GCC_TREE_DIAGNOSTIC_H
      23  #define GCC_TREE_DIAGNOSTIC_H
      24  
      25  /* TREE_BLOCK if the diagnostic is to be reported in some inline
      26     function inlined into other function, otherwise NULL.  */
      27  #define diagnostic_abstract_origin(DI)		\
      28    ((tree) diagnostic_info_auxiliary_data (DI))
      29  
      30  /* Function of last diagnostic message; more generally, function such
      31     that if next diagnostic message is in it then we don't have to
      32     mention the function name.  */
      33  #define diagnostic_last_function(DC)			\
      34    ((tree) diagnostic_context_auxiliary_data (DC))
      35  
      36  /* True if the last function in which a diagnostic was reported is
      37     different from the current one.  */
      38  #define diagnostic_last_function_changed(DC, DI)			\
      39    (diagnostic_last_function (DC) != (diagnostic_abstract_origin (DI)	\
      40  				     ? diagnostic_abstract_origin (DI)	\
      41  				     : current_function_decl))
      42  
      43  /* Remember the current function as being the last one in which we report
      44     a diagnostic.  */
      45  #define diagnostic_set_last_function(DC, DI)		\
      46    diagnostic_context_auxiliary_data (DC)		\
      47      = (((DI) && diagnostic_abstract_origin (DI))	\
      48         ? diagnostic_abstract_origin (DI)		\
      49         : current_function_decl)
      50  
      51  void diagnostic_report_current_function (diagnostic_context *,
      52  					 diagnostic_info *);
      53  void virt_loc_aware_diagnostic_finalizer (diagnostic_context *,
      54  					  diagnostic_info *);
      55  
      56  void tree_diagnostics_defaults (diagnostic_context *context);
      57  bool default_tree_printer (pretty_printer *, text_info *, const char *,
      58  			   int, bool, bool, bool, bool *, const char **);
      59  
      60  extern void default_tree_diagnostic_path_printer (diagnostic_context *,
      61  						  const diagnostic_path *);
      62  extern json::value *default_tree_make_json_for_path (diagnostic_context *,
      63  						     const diagnostic_path *);
      64  
      65  extern void maybe_unwind_expanded_macro_loc (diagnostic_context *context,
      66  					     location_t where);
      67  
      68  #endif /* ! GCC_TREE_DIAGNOSTIC_H */