LCOV - code coverage report
Current view: top level - gcc - diagnostic-core.h (source / functions) Coverage Total Hit
Test: gcc.info Lines: 100.0 % 4 4
Test Date: 2024-12-21 13:15:12 Functions: - 0 0
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: - 0 0

             Branch data     Line data    Source code
       1                 :             : /* Declarations of core diagnostic functionality for code that does
       2                 :             :    not need to deal with diagnostic contexts or diagnostic info
       3                 :             :    structures.
       4                 :             :    Copyright (C) 1998-2024 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_DIAGNOSTIC_CORE_H
      23                 :             : #define GCC_DIAGNOSTIC_CORE_H
      24                 :             : 
      25                 :             : #include "bversion.h"
      26                 :             : 
      27                 :             : /* Constants used to discriminate diagnostics.  */
      28                 :             : typedef enum
      29                 :             : {
      30                 :             : #define DEFINE_DIAGNOSTIC_KIND(K, msgid, C) K,
      31                 :             : #include "diagnostic.def"
      32                 :             : #undef DEFINE_DIAGNOSTIC_KIND
      33                 :             :   DK_LAST_DIAGNOSTIC_KIND,
      34                 :             :   /* This is used for tagging pragma pops in the diagnostic
      35                 :             :      classification history chain.  */
      36                 :             :   DK_POP,
      37                 :             :   /* This is used internally to note that a diagnostic is enabled
      38                 :             :      without mandating any specific type.  */
      39                 :             :   DK_ANY,
      40                 :             : } diagnostic_t;
      41                 :             : 
      42                 :             : /* RAII-style class for grouping related diagnostics.  */
      43                 :             : 
      44                 :             : class auto_diagnostic_group
      45                 :             : {
      46                 :             :  public:
      47                 :             :   auto_diagnostic_group ();
      48                 :             :   ~auto_diagnostic_group ();
      49                 :             : };
      50                 :             : 
      51                 :             : /* RAII-style class for nesting hierarchical diagnostics.
      52                 :             :    Any diagnostics emitted within the lifetime of this object
      53                 :             :    will be treated as one level of nesting deeper than diagnostics
      54                 :             :    emitted outside the lifetime of the object.  */
      55                 :             : 
      56                 :             : class auto_diagnostic_nesting_level
      57                 :             : {
      58                 :             :  public:
      59                 :             :   auto_diagnostic_nesting_level ();
      60                 :             :   ~auto_diagnostic_nesting_level ();
      61                 :             : };
      62                 :             : 
      63                 :             : /* Forward decl.  */
      64                 :             : class diagnostic_metadata; /* See diagnostic-metadata.h.  */
      65                 :             : 
      66                 :             : /* A class to use for the ID of an option that controls
      67                 :             :    a particular diagnostic.
      68                 :             :    This is just a wrapper around "int", but better documents
      69                 :             :    the intent of the code.  */
      70                 :             : 
      71                 :             : struct diagnostic_option_id
      72                 :             : {
      73                 :   103523965 :   diagnostic_option_id () : m_idx (0) {}
      74                 :             : 
      75                 :   195320041 :   diagnostic_option_id (int idx) : m_idx (idx) {}
      76                 :             :   /* Ideally we'd take an enum opt_code here, but we don't
      77                 :             :      want to depend on its decl.  */
      78                 :             : 
      79                 :     1543125 :   bool operator== (diagnostic_option_id other) const
      80                 :             :   {
      81                 :     1543125 :     return m_idx == other.m_idx;
      82                 :             :   }
      83                 :             : 
      84                 :             :   int m_idx;
      85                 :             : };
      86                 :             : 
      87                 :             : extern const char *progname;
      88                 :             : 
      89                 :             : extern const char *trim_filename (const char *);
      90                 :             : 
      91                 :             : /* If we haven't already defined a front-end-specific diagnostics
      92                 :             :    style, use the generic one.  */
      93                 :             : #ifndef GCC_DIAG_STYLE
      94                 :             : #define GCC_DIAG_STYLE __gcc_tdiag__
      95                 :             : #endif
      96                 :             : /* None of these functions are suitable for ATTRIBUTE_PRINTF, because
      97                 :             :    each language front end can extend them with its own set of format
      98                 :             :    specifiers.  We must use custom format checks.  */
      99                 :             : #if (CHECKING_P && GCC_VERSION >= 4001) || GCC_VERSION == BUILDING_GCC_VERSION
     100                 :             : #define ATTRIBUTE_GCC_DIAG(m, n) __attribute__ ((__format__ (GCC_DIAG_STYLE, m, n))) ATTRIBUTE_NONNULL(m)
     101                 :             : #else
     102                 :             : #define ATTRIBUTE_GCC_DIAG(m, n) ATTRIBUTE_NONNULL(m)
     103                 :             : #endif
     104                 :             : extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
     105                 :             :      ATTRIBUTE_NORETURN;
     106                 :             : extern void internal_error_no_backtrace (const char *, ...)
     107                 :             :      ATTRIBUTE_GCC_DIAG(1,2) ATTRIBUTE_NORETURN;
     108                 :             : /* Pass one of the OPT_W* from options.h as the first parameter.  */
     109                 :             : extern bool warning (diagnostic_option_id,
     110                 :             :                      const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     111                 :             : extern bool warning_n (location_t,
     112                 :             :                        diagnostic_option_id,
     113                 :             :                        unsigned HOST_WIDE_INT,
     114                 :             :                        const char *, const char *, ...)
     115                 :             :     ATTRIBUTE_GCC_DIAG(4,6) ATTRIBUTE_GCC_DIAG(5,6);
     116                 :             : extern bool warning_n (rich_location *,
     117                 :             :                        diagnostic_option_id,
     118                 :             :                        unsigned HOST_WIDE_INT,
     119                 :             :                        const char *, const char *, ...)
     120                 :             :     ATTRIBUTE_GCC_DIAG(4, 6) ATTRIBUTE_GCC_DIAG(5, 6);
     121                 :             : extern bool warning_at (location_t,
     122                 :             :                         diagnostic_option_id,
     123                 :             :                         const char *, ...)
     124                 :             :     ATTRIBUTE_GCC_DIAG(3,4);
     125                 :             : extern bool warning_at (rich_location *,
     126                 :             :                         diagnostic_option_id,
     127                 :             :                         const char *, ...)
     128                 :             :     ATTRIBUTE_GCC_DIAG(3,4);
     129                 :             : extern bool warning_meta (rich_location *,
     130                 :             :                           const diagnostic_metadata &,
     131                 :             :                           diagnostic_option_id,
     132                 :             :                           const char *, ...)
     133                 :             :     ATTRIBUTE_GCC_DIAG(4,5);
     134                 :             : extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
     135                 :             : extern void error_n (location_t, unsigned HOST_WIDE_INT, const char *,
     136                 :             :                      const char *, ...)
     137                 :             :     ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
     138                 :             : extern void error_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     139                 :             : extern void error_at (rich_location *, const char *, ...)
     140                 :             :   ATTRIBUTE_GCC_DIAG(2,3);
     141                 :             : extern void error_meta (rich_location *, const diagnostic_metadata &,
     142                 :             :                         const char *, ...)
     143                 :             :   ATTRIBUTE_GCC_DIAG(3,4);
     144                 :             : extern void fatal_error (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3)
     145                 :             :      ATTRIBUTE_NORETURN;
     146                 :             : /* Pass one of the OPT_W* from options.h as the second parameter.  */
     147                 :             : extern bool pedwarn (location_t,
     148                 :             :                      diagnostic_option_id,
     149                 :             :                      const char *, ...)
     150                 :             :      ATTRIBUTE_GCC_DIAG(3,4);
     151                 :             : extern bool pedwarn (rich_location *,
     152                 :             :                      diagnostic_option_id,
     153                 :             :                      const char *, ...)
     154                 :             :      ATTRIBUTE_GCC_DIAG(3,4);
     155                 :             : extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     156                 :             : extern bool permerror (rich_location *, const char *,
     157                 :             :                                    ...) ATTRIBUTE_GCC_DIAG(2,3);
     158                 :             : extern bool permerror_opt (location_t,
     159                 :             :                            diagnostic_option_id,
     160                 :             :                            const char *, ...)
     161                 :             :   ATTRIBUTE_GCC_DIAG(3,4);
     162                 :             : extern bool permerror_opt (rich_location *,
     163                 :             :                            diagnostic_option_id,
     164                 :             :                            const char *, ...)
     165                 :             :   ATTRIBUTE_GCC_DIAG(3,4);
     166                 :             : extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
     167                 :             : extern void sorry_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     168                 :             : extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     169                 :             : extern void inform (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
     170                 :             : extern void inform_n (location_t, unsigned HOST_WIDE_INT, const char *,
     171                 :             :                       const char *, ...)
     172                 :             :     ATTRIBUTE_GCC_DIAG(3,5) ATTRIBUTE_GCC_DIAG(4,5);
     173                 :             : extern void verbatim (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
     174                 :             : extern bool emit_diagnostic (diagnostic_t,
     175                 :             :                              location_t,
     176                 :             :                              diagnostic_option_id,
     177                 :             :                              const char *, ...) ATTRIBUTE_GCC_DIAG(4,5);
     178                 :             : extern bool emit_diagnostic (diagnostic_t,
     179                 :             :                              rich_location *,
     180                 :             :                              diagnostic_option_id,
     181                 :             :                              const char *, ...) ATTRIBUTE_GCC_DIAG(4,5);
     182                 :             : extern bool emit_diagnostic_valist (diagnostic_t,
     183                 :             :                                     location_t,
     184                 :             :                                     diagnostic_option_id,
     185                 :             :                                     const char *, va_list *)
     186                 :             :   ATTRIBUTE_GCC_DIAG (4,0);
     187                 :             : extern bool emit_diagnostic_valist_meta (diagnostic_t,
     188                 :             :                                          rich_location *,
     189                 :             :                                          const diagnostic_metadata *,
     190                 :             :                                          diagnostic_option_id,
     191                 :             :                                          const char *,
     192                 :             :                                          va_list *) ATTRIBUTE_GCC_DIAG (5,0);
     193                 :             : extern bool seen_error (void);
     194                 :             : 
     195                 :             : #ifdef BUFSIZ
     196                 :             :   /* N.B. Unlike all the others, fnotice is just gettext+fprintf, and
     197                 :             :      therefore it can have ATTRIBUTE_PRINTF.  */
     198                 :             : extern void fnotice                     (FILE *, const char *, ...)
     199                 :             :      ATTRIBUTE_PRINTF_2;
     200                 :             : #endif
     201                 :             : 
     202                 :             : #endif /* ! GCC_DIAGNOSTIC_CORE_H */
        

Generated by: LCOV version 2.1-beta

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.