GCC Middle and Back End API Reference
coretypes.h
Go to the documentation of this file.
1/* GCC core type declarations.
2 Copyright (C) 2002-2024 Free Software Foundation, Inc.
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
9version.
10
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
15
16Under Section 7 of GPL version 3, you are granted additional
17permissions described in the GCC Runtime Library Exception, version
183.1, as published by the Free Software Foundation.
19
20You should have received a copy of the GNU General Public License and
21a copy of the GCC Runtime Library Exception along with this program;
22see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23<http://www.gnu.org/licenses/>. */
24
25/* Provide forward declarations of core types which are referred to by
26 most of the compiler. This allows header files to use these types
27 (e.g. in function prototypes) without concern for whether the full
28 definitions are visible. Some other declarations that need to be
29 universally visible are here, too.
30
31 In the context of tconfig.h, most of these have special definitions
32 which prevent them from being used except in further type
33 declarations. This is a kludge; the right thing is to avoid
34 including the "tm.h" header set in the context of tconfig.h, but
35 we're not there yet. */
36
37#ifndef GCC_CORETYPES_H
38#define GCC_CORETYPES_H
39
40#ifndef GTY
41#define GTY(x) /* nothing - marker for gengtype */
42#endif
43
44#ifndef USED_FOR_TARGET
45
46typedef int64_t gcov_type;
47typedef uint64_t gcov_type_unsigned;
48
49struct bitmap_obstack;
50class bitmap_head;
51typedef class bitmap_head *bitmap;
52typedef const class bitmap_head *const_bitmap;
54typedef struct simple_bitmap_def *sbitmap;
55typedef const struct simple_bitmap_def *const_sbitmap;
56struct rtx_def;
57typedef struct rtx_def *rtx;
58typedef const struct rtx_def *const_rtx;
59class scalar_mode;
60class scalar_int_mode;
62class complex_mode;
63class fixed_size_mode;
64template<typename> class opt_mode;
68template<typename> struct pod_mode;
72
73/* Subclasses of rtx_def, using indentation to show the class
74 hierarchy, along with the relevant invariant.
75 Where possible, keep this list in the same order as in rtl.def. */
76struct rtx_def;
77 struct rtx_expr_list; /* GET_CODE (X) == EXPR_LIST */
78 struct rtx_insn_list; /* GET_CODE (X) == INSN_LIST */
79 struct rtx_sequence; /* GET_CODE (X) == SEQUENCE */
80 struct rtx_insn;
81 struct rtx_debug_insn; /* DEBUG_INSN_P (X) */
82 struct rtx_nonjump_insn; /* NONJUMP_INSN_P (X) */
83 struct rtx_jump_insn; /* JUMP_P (X) */
84 struct rtx_call_insn; /* CALL_P (X) */
85 struct rtx_jump_table_data; /* JUMP_TABLE_DATA_P (X) */
86 struct rtx_barrier; /* BARRIER_P (X) */
87 struct rtx_code_label; /* LABEL_P (X) */
88 struct rtx_note; /* NOTE_P (X) */
89
90struct rtvec_def;
91typedef struct rtvec_def *rtvec;
92typedef const struct rtvec_def *const_rtvec;
93struct hwivec_def;
94typedef struct hwivec_def *hwivec;
95typedef const struct hwivec_def *const_hwivec;
96union tree_node;
97typedef union tree_node *tree;
98typedef const union tree_node *const_tree;
99struct gimple;
102class code_helper;
103enum tree_index : unsigned;
104
105/* Forward declare rtx_code, so that we can use it in target hooks without
106 needing to pull in rtl.h. */
107enum rtx_code : unsigned;
108
109/* Forward decls for leaf gimple subclasses (for individual gimple codes).
110 Keep this in the same order as the corresponding codes in gimple.def. */
111
112struct gcond;
113struct gdebug;
114struct ggoto;
115struct glabel;
116struct gswitch;
117struct gassign;
118struct gasm;
119struct gcall;
120struct gtransaction;
121struct greturn;
122struct gbind;
123struct gcatch;
124struct geh_filter;
125struct geh_mnt;
126struct geh_else;
127struct gresx;
128struct geh_dispatch;
129struct gphi;
130struct gtry;
131struct gomp_atomic_load;
132struct gomp_atomic_store;
133struct gomp_continue;
134struct gomp_critical;
135struct gomp_ordered;
136struct gomp_for;
137struct gomp_parallel;
138struct gomp_task;
139struct gomp_sections;
140struct gomp_single;
141struct gomp_target;
142struct gomp_teams;
143
144/* Forward declaration of CFI's and DWARF's types. */
145struct dw_cfi_node;
146using dw_cfi_ref = struct dw_cfi_node *;
147enum dw_cfi_oprnd_type: int;
148enum dwarf_call_frame_info: int;
149
150/* Subclasses of symtab_node, using indentation to show the class
151 hierarchy. */
152
153struct symtab_node;
154 struct cgraph_node;
155 struct varpool_node;
156struct cgraph_edge;
157
158union section;
159typedef union section section;
160struct gcc_options;
161struct cl_target_option;
162struct cl_optimization;
163struct cl_option;
164struct cl_decoded_option;
165struct cl_option_handlers;
166class rich_location;
169class pretty_printer;
171typedef const char * (*diagnostic_input_charset_callback)(const char *);
172namespace pp_markup { class element; }
174
175template<typename T> struct array_traits;
176
177/* Provides a read-only bitmap view of a single integer bitmask or an
178 array of integer bitmasks, or of a wrapper around such bitmasks. */
179template<typename T, typename Traits = array_traits<T>,
180 bool has_constant_size = Traits::has_constant_size>
182
183/* Address space number for named address space support. */
184typedef unsigned char addr_space_t;
185
186/* The value of addr_space_t that represents the generic address space. */
187#define ADDR_SPACE_GENERIC 0
188#define ADDR_SPACE_GENERIC_P(AS) ((AS) == ADDR_SPACE_GENERIC)
189
190/* The major intermediate representations of GCC. */
196
197/* Provide forward struct declaration so that we don't have to include
198 all of cpplib.h whenever a random prototype includes a pointer.
199 Note that the cpp_reader and cpp_token typedefs remain part of
200 cpplib.h. */
201
202struct cpp_reader;
203struct cpp_token;
204
205/* The thread-local storage model associated with a given VAR_DECL
206 or SYMBOL_REF. This isn't used much, but both trees and RTL refer
207 to it, so it's here. */
217
218/* Types of trampoline implementation. */
223
224/* Types of ABI for an offload compiler. */
230
231/* Types of profile update methods. */
237
238/* Type of profile reproducibility methods. */
244
245/* Type of -fstack-protector-*. */
252
253/* Types of unwind/exception handling info that can be generated.
254 Note that a UI_TARGET (or larger) setting is considered to be
255 incompatible with -freorder-blocks-and-partition. */
256
265
266/* Callgraph node profile representation. */
268 /* This function most likely won't be executed at all.
269 (set only when profile feedback is available or via function attribute). */
271 /* For functions that are known to be executed once (i.e. constructors, destructors
272 and main function. */
274 /* The default value. */
276 /* Optimize this function hard
277 (set only when profile feedback is available or via function attribute). */
280
281/* Ways of optimizing code. */
283 /* Prioritize speed over size. */
285
286 /* Only do things that are good for both size and speed. */
288
289 /* Prioritize size over speed. */
292
293/* Enumerates a padding direction. */
295 /* No padding is required. */
297
298 /* Insert padding above the data, i.e. at higher memeory addresses
299 when dealing with memory, and at the most significant end when
300 dealing with registers. */
302
303 /* Insert padding below the data, i.e. at lower memeory addresses
304 when dealing with memory, and at the least significant end when
305 dealing with registers. */
308
309/* Possible initialization status of a variable. When requested
310 by the user, this information is tracked and recorded in the DWARF
311 debug information, along with the variable's location. */
318
319/* Names for the different levels of -Wstrict-overflow=N. The numeric
320 values here correspond to N. */
322{
323 /* Overflow warning that should be issued with -Wall: a questionable
324 construct that is easy to avoid even when using macros. Example:
325 folding (x + CONSTANT > x) to 1. */
327 /* Overflow warning about folding a comparison to a constant because
328 of undefined signed overflow, other than cases covered by
329 WARN_STRICT_OVERFLOW_ALL. Example: folding (abs (x) >= 0) to 1
330 (this is false when x == INT_MIN). */
332 /* Overflow warning about changes to comparisons other than folding
333 them to a constant. Example: folding (x + 1 > 1) to (x > 0). */
335 /* Overflow warnings not covered by the above cases. Example:
336 folding ((x * 10) / 5) to (x * 2). */
338 /* Overflow warnings about reducing magnitude of constants in
339 comparison. Example: folding (x + 2 > y) to (x + 1 >= y). */
342
343/* The type of an alias set. Code currently assumes that variables of
344 this type can take the values 0 (the alias set which aliases
345 everything) and -1 (sometimes indicating that the alias set is
346 unknown, sometimes indicating a memory barrier) and -2 (indicating
347 that the alias set should be set to a unique value but has not been
348 set yet). */
349typedef int alias_set_type;
350
351class edge_def;
352typedef class edge_def *edge;
353typedef const class edge_def *const_edge;
354struct basic_block_def;
356typedef const struct basic_block_def *const_basic_block;
357
358#if !defined (GENERATOR_FILE)
359# define OBSTACK_CHUNK_SIZE memory_block_pool::block_size
360# define obstack_chunk_alloc mempool_obstack_chunk_alloc
361# define obstack_chunk_free mempool_obstack_chunk_free
362#else
363# define OBSTACK_CHUNK_SIZE 0
364# define obstack_chunk_alloc xmalloc
365# define obstack_chunk_free free
366#endif
367
368#define gcc_obstack_init(OBSTACK) \
369 obstack_specify_allocation ((OBSTACK), OBSTACK_CHUNK_SIZE, 0, \
370 obstack_chunk_alloc, \
371 obstack_chunk_free)
372
373/* enum reg_class is target specific, so it should not appear in
374 target-independent code or interfaces, like the target hook declarations
375 in target.h. */
376typedef int reg_class_t;
377
378class rtl_opt_pass;
379
380namespace gcc {
381 class context;
382}
383
384typedef std::pair <tree, tree> tree_pair;
385typedef std::pair <const char *, int> string_int_pair;
386
387/* Define a name->value mapping. */
388template <typename ValueType>
390{
391 const char *const name; /* the name of the value */
392 const ValueType value; /* the value of the name */
393};
394
395#else
396
397struct _dont_use_rtx_here_;
398struct _dont_use_rtvec_here_;
399struct _dont_use_rtx_insn_here_;
400union _dont_use_tree_here_;
401#define rtx struct _dont_use_rtx_here_ *
402#define const_rtx struct _dont_use_rtx_here_ *
403#define rtvec struct _dont_use_rtvec_here *
404#define const_rtvec struct _dont_use_rtvec_here *
405#define rtx_insn struct _dont_use_rtx_insn_here_
406#define tree union _dont_use_tree_here_ *
407#define const_tree union _dont_use_tree_here_ *
408
409typedef struct scalar_mode scalar_mode;
410typedef struct scalar_int_mode scalar_int_mode;
412typedef struct complex_mode complex_mode;
413
414#endif
415
416/* Classes of functions that compiler needs to check
417 whether they are present at the runtime or not. */
427
428/* Enumerate visibility settings. This is deliberately ordered from most
429 to least visibility. */
437
438/* enums used by the targetm.excess_precision hook. */
439
448
456
457/* Level of size optimization. */
458
460{
461 /* Do not optimize for size. */
463 /* Optimize for size but not at extreme performance costs. */
465 /* Optimize for size as much as possible. */
468
469/* Support for user-provided GGC and PCH markers. The first parameter
470 is a pointer to a pointer, the second either NULL if the pointer to
471 pointer points into a GC object or the actual pointer address if
472 the first argument points to a temporary and the third a cookie. */
473typedef void (*gt_pointer_operator) (void *, void *, void *);
474
475#if !defined (HAVE_UCHAR)
476typedef unsigned char uchar;
477#endif
478
479/* Most source files will require the following headers. */
480#if !defined (USED_FOR_TARGET)
481#include "insn-modes.h"
482#include "signop.h"
483#include "wide-int.h"
484#include "wide-int-print.h"
485
486/* On targets that don't need polynomial offsets, target-specific code
487 should be able to treat poly_int like a normal constant, with a
488 conversion operator going from the former to the latter. We also
489 allow this for gencondmd.cc for all targets, so that we can treat
490 machine_modes as enums without causing build failures. */
491#if (defined (IN_TARGET_CODE) \
492 && (defined (USE_ENUM_MODES) || NUM_POLY_INT_COEFFS == 1))
493#define POLY_INT_CONVERSION 1
494#else
495#define POLY_INT_CONVERSION 0
496#endif
497
498#include "poly-int.h"
499#include "poly-int-types.h"
500#include "insn-modes-inline.h"
501#include "machmode.h"
502#include "double-int.h"
503#include "align.h"
504/* Most host source files will require the following headers. */
505#if !defined (GENERATOR_FILE)
506#include "iterator-utils.h"
507#include "real.h"
508#include "fixed-value.h"
509#include "hash-table.h"
510#include "hash-set.h"
511#include "input.h"
512#include "is-a.h"
513#include "memory-block.h"
514#include "dumpfile.h"
515#endif
516#endif /* GENERATOR_FILE && !USED_FOR_TARGET */
517
518#endif /* coretypes.h */
Definition bitmap.h:328
Definition coretypes.h:181
Definition cgraph.h:1696
Definition tree.h:81
Definition machmode.h:543
Definition diagnostic.h:504
Definition diagnostic-event-id.h:37
Definition diagnostic-format-text.h:33
Definition basic-block.h:26
Definition machmode.h:833
Definition machmode.h:263
Definition pretty-print-markup.h:61
Definition pretty-print.h:241
Definition tree-pass.h:127
Definition machmode.h:465
Definition machmode.h:437
Definition machmode.h:493
struct basic_block_def * basic_block
Definition coretypes.h:355
struct rtx_def * rtx
Definition coretypes.h:57
opt_mode< scalar_float_mode > opt_scalar_float_mode
Definition coretypes.h:67
unwind_info_type
Definition coretypes.h:258
@ UI_SJLJ
Definition coretypes.h:260
@ UI_DWARF2
Definition coretypes.h:261
@ UI_SEH
Definition coretypes.h:262
@ UI_NONE
Definition coretypes.h:259
@ UI_TARGET
Definition coretypes.h:263
unsigned char addr_space_t
Definition coretypes.h:184
var_init_status
Definition coretypes.h:313
@ VAR_INIT_STATUS_UNKNOWN
Definition coretypes.h:314
@ VAR_INIT_STATUS_UNINITIALIZED
Definition coretypes.h:315
@ VAR_INIT_STATUS_INITIALIZED
Definition coretypes.h:316
optimize_size_level
Definition coretypes.h:460
@ OPTIMIZE_SIZE_BALANCED
Definition coretypes.h:464
@ OPTIMIZE_SIZE_NO
Definition coretypes.h:462
@ OPTIMIZE_SIZE_MAX
Definition coretypes.h:466
class edge_def * edge
Definition coretypes.h:352
gimple * gimple_seq
Definition coretypes.h:100
offload_abi
Definition coretypes.h:225
@ OFFLOAD_ABI_UNSET
Definition coretypes.h:226
@ OFFLOAD_ABI_LP64
Definition coretypes.h:227
@ OFFLOAD_ABI_ILP32
Definition coretypes.h:228
pod_mode< scalar_mode > scalar_mode_pod
Definition coretypes.h:69
ir_type
Definition coretypes.h:191
@ IR_RTL_CFGRTL
Definition coretypes.h:193
@ IR_RTL_CFGLAYOUT
Definition coretypes.h:194
@ IR_GIMPLE
Definition coretypes.h:192
const struct rtvec_def * const_rtvec
Definition coretypes.h:92
tls_model
Definition coretypes.h:208
@ TLS_MODEL_NONE
Definition coretypes.h:209
@ TLS_MODEL_LOCAL_DYNAMIC
Definition coretypes.h:213
@ TLS_MODEL_LOCAL_EXEC
Definition coretypes.h:215
@ TLS_MODEL_INITIAL_EXEC
Definition coretypes.h:214
@ TLS_MODEL_EMULATED
Definition coretypes.h:210
@ TLS_MODEL_REAL
Definition coretypes.h:211
@ TLS_MODEL_GLOBAL_DYNAMIC
Definition coretypes.h:212
pod_mode< scalar_int_mode > scalar_int_mode_pod
Definition coretypes.h:70
stack_protector
Definition coretypes.h:246
@ SPCT_FLAG_STRONG
Definition coretypes.h:249
@ SPCT_FLAG_DEFAULT
Definition coretypes.h:247
@ SPCT_FLAG_ALL
Definition coretypes.h:248
@ SPCT_FLAG_EXPLICIT
Definition coretypes.h:250
unsigned char uchar
Definition coretypes.h:476
const struct rtx_def * const_rtx
Definition coretypes.h:58
std::pair< const char *, int > string_int_pair
Definition coretypes.h:385
function_class
Definition coretypes.h:418
@ function_c99_math_complex
Definition coretypes.h:421
@ function_c23_misc
Definition coretypes.h:424
@ function_sincos
Definition coretypes.h:422
@ function_c94
Definition coretypes.h:419
@ function_c11_misc
Definition coretypes.h:423
@ function_c2y_misc
Definition coretypes.h:425
@ function_c99_misc
Definition coretypes.h:420
uint64_t gcov_type_unsigned
Definition coretypes.h:47
symbol_visibility
Definition coretypes.h:431
@ VISIBILITY_HIDDEN
Definition coretypes.h:434
@ VISIBILITY_DEFAULT
Definition coretypes.h:432
@ VISIBILITY_INTERNAL
Definition coretypes.h:435
@ VISIBILITY_PROTECTED
Definition coretypes.h:433
excess_precision_type
Definition coretypes.h:450
@ EXCESS_PRECISION_TYPE_STANDARD
Definition coretypes.h:452
@ EXCESS_PRECISION_TYPE_IMPLICIT
Definition coretypes.h:451
@ EXCESS_PRECISION_TYPE_FAST
Definition coretypes.h:453
@ EXCESS_PRECISION_TYPE_FLOAT16
Definition coretypes.h:454
struct hwivec_def * hwivec
Definition coretypes.h:94
struct simple_bitmap_def * sbitmap
Definition coretypes.h:54
std::pair< tree, tree > tree_pair
Definition coretypes.h:384
const class edge_def * const_edge
Definition coretypes.h:353
trampoline_impl
Definition coretypes.h:219
@ TRAMPOLINE_IMPL_STACK
Definition coretypes.h:220
@ TRAMPOLINE_IMPL_HEAP
Definition coretypes.h:221
profile_reproducibility
Definition coretypes.h:239
@ PROFILE_REPRODUCIBILITY_PARALLEL_RUNS
Definition coretypes.h:241
@ PROFILE_REPRODUCIBILITY_MULTITHREADED
Definition coretypes.h:242
@ PROFILE_REPRODUCIBILITY_SERIAL
Definition coretypes.h:240
pp_markup::element pp_element
Definition coretypes.h:173
pod_mode< fixed_size_mode > fixed_size_mode_pod
Definition coretypes.h:71
const struct simple_bitmap_def * const_sbitmap
Definition coretypes.h:55
opt_mode< scalar_int_mode > opt_scalar_int_mode
Definition coretypes.h:66
node_frequency
Definition coretypes.h:267
@ NODE_FREQUENCY_HOT
Definition coretypes.h:278
@ NODE_FREQUENCY_NORMAL
Definition coretypes.h:275
@ NODE_FREQUENCY_UNLIKELY_EXECUTED
Definition coretypes.h:270
@ NODE_FREQUENCY_EXECUTED_ONCE
Definition coretypes.h:273
pad_direction
Definition coretypes.h:294
@ PAD_DOWNWARD
Definition coretypes.h:306
@ PAD_NONE
Definition coretypes.h:296
@ PAD_UPWARD
Definition coretypes.h:301
const class bitmap_head * const_bitmap
Definition coretypes.h:52
profile_update
Definition coretypes.h:232
@ PROFILE_UPDATE_ATOMIC
Definition coretypes.h:234
@ PROFILE_UPDATE_SINGLE
Definition coretypes.h:233
@ PROFILE_UPDATE_PREFER_ATOMIC
Definition coretypes.h:235
flt_eval_method
Definition coretypes.h:441
@ FLT_EVAL_METHOD_PROMOTE_TO_FLOAT
Definition coretypes.h:443
@ FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16
Definition coretypes.h:446
@ FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE
Definition coretypes.h:445
@ FLT_EVAL_METHOD_UNPREDICTABLE
Definition coretypes.h:442
@ FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE
Definition coretypes.h:444
int reg_class_t
Definition coretypes.h:376
const struct basic_block_def * const_basic_block
Definition coretypes.h:356
const union tree_node * const_tree
Definition coretypes.h:98
const struct hwivec_def * const_hwivec
Definition coretypes.h:95
void(* gt_pointer_operator)(void *, void *, void *)
Definition coretypes.h:473
class bitmap_head * bitmap
Definition coretypes.h:51
int64_t gcov_type
Definition coretypes.h:46
warn_strict_overflow_code
Definition coretypes.h:322
@ WARN_STRICT_OVERFLOW_MAGNITUDE
Definition coretypes.h:340
@ WARN_STRICT_OVERFLOW_MISC
Definition coretypes.h:337
@ WARN_STRICT_OVERFLOW_COMPARISON
Definition coretypes.h:334
@ WARN_STRICT_OVERFLOW_CONDITIONAL
Definition coretypes.h:331
@ WARN_STRICT_OVERFLOW_ALL
Definition coretypes.h:326
opt_mode< scalar_mode > opt_scalar_mode
Definition coretypes.h:65
union tree_node * tree
Definition coretypes.h:97
optimization_type
Definition coretypes.h:282
@ OPTIMIZE_FOR_BOTH
Definition coretypes.h:287
@ OPTIMIZE_FOR_SPEED
Definition coretypes.h:284
@ OPTIMIZE_FOR_SIZE
Definition coretypes.h:290
int alias_set_type
Definition coretypes.h:349
struct rtvec_def * rtvec
Definition coretypes.h:91
dw_cfi_oprnd_type
Definition dwarf2out.h:40
Definition context.h:23
Definition coretypes.h:172
rtx_code
Definition rtl.h:48
Definition array-traits.h:35
Definition basic-block.h:117
Definition bitmap.h:294
Definition cgraph.h:875
Definition opts.h:250
Definition opts.h:325
Definition opts.h:69
Definition dwarf2out.h:57
Definition gimple.h:546
Definition gimple.h:900
Definition gimple.h:386
Definition gimple.h:349
Definition gimple.h:409
Definition gimple.h:854
Definition gimple.h:864
Definition gimple.h:491
Definition gimple.h:438
Definition gimple.h:423
Definition gimple.h:448
Definition gimple.h:873
Definition gimple-iterator.h:26
Definition gimple.h:221
Definition gimple.h:882
Definition gimple.h:756
Definition gimple.h:776
Definition gimple.h:705
Definition gimple.h:570
Definition gimple.h:602
Definition gimple.h:739
Definition gimple.h:651
Definition gimple.h:687
Definition gimple.h:727
Definition gimple.h:658
Definition gimple.h:666
Definition gimple.h:733
Definition gimple.h:458
Definition gimple.h:485
Definition gimple.h:910
Definition gimple.h:891
Definition gimple.h:830
Definition gimple.h:500
Definition rtl.h:282
Definition coretypes.h:390
const char *const name
Definition coretypes.h:391
const ValueType value
Definition coretypes.h:392
Definition machmode.h:355
Definition rtl.h:735
Definition rtl.h:667
Definition rtl.h:628
Definition rtl.h:678
Definition rtl.h:579
Definition rtl.h:311
Definition rtl.h:458
Definition rtl.h:479
Definition rtl.h:545
Definition rtl.h:601
Definition rtl.h:641
Definition rtl.h:590
Definition rtl.h:689
Definition rtl.h:512
Definition sbitmap.h:87
Definition cgraph.h:106
Definition cgraph.h:2000
tree_index
Definition tree-core.h:681
Definition output.h:514