GCC Middle and Back End API Reference
coretypes.h File Reference
#include "insn-modes.h"
#include "signop.h"
#include "wide-int.h"
#include "wide-int-print.h"
#include "poly-int.h"
#include "poly-int-types.h"
#include "insn-modes-inline.h"
#include "machmode.h"
#include "double-int.h"
#include "align.h"
#include "iterator-utils.h"
#include "real.h"
#include "fixed-value.h"
#include "hash-table.h"
#include "hash-set.h"
#include "input.h"
#include "is-a.h"
#include "memory-block.h"
#include "dumpfile.h"
Include dependency graph for coretypes.h:

Go to the source code of this file.

Data Structures

struct  kv_pair< ValueType >
 

Namespaces

namespace  gcc
 

Macros

#define GTY(x)   /* nothing - marker for gengtype @endverbatim */
 
#define ADDR_SPACE_GENERIC   0
 
#define ADDR_SPACE_GENERIC_P(AS)   ((AS) == ADDR_SPACE_GENERIC)
 
#define OBSTACK_CHUNK_SIZE   memory_block_pool::block_size
 
#define obstack_chunk_alloc   mempool_obstack_chunk_alloc
 
#define obstack_chunk_free   mempool_obstack_chunk_free
 
#define gcc_obstack_init(OBSTACK)
 
#define POLY_INT_CONVERSION   0
 

Typedefs

typedef int64_t gcov_type
 
typedef uint64_t gcov_type_unsigned
 
typedef class bitmap_headbitmap
 
typedef const class bitmap_headconst_bitmap
 
typedef struct simple_bitmap_defsbitmap
 
typedef const struct simple_bitmap_defconst_sbitmap
 
typedef struct rtx_defrtx
 
typedef const struct rtx_defconst_rtx
 
typedef opt_mode< scalar_modeopt_scalar_mode
 
typedef opt_mode< scalar_int_modeopt_scalar_int_mode
 
typedef opt_mode< scalar_float_modeopt_scalar_float_mode
 
typedef pod_mode< scalar_modescalar_mode_pod
 
typedef pod_mode< scalar_int_modescalar_int_mode_pod
 
typedef pod_mode< fixed_size_modefixed_size_mode_pod
 
typedef struct rtvec_defrtvec
 
typedef const struct rtvec_defconst_rtvec
 
typedef struct hwivec_defhwivec
 
typedef const struct hwivec_defconst_hwivec
 
typedef union tree_node * tree
 
typedef const union tree_node * const_tree
 
typedef gimplegimple_seq
 
typedef union section section
 
typedef const char *(* diagnostic_input_charset_callback) (const char *)
 
typedef unsigned char addr_space_t
 
typedef int alias_set_type
 
typedef class edge_defedge
 
typedef const class edge_defconst_edge
 
typedef struct basic_block_defbasic_block
 
typedef const struct basic_block_defconst_basic_block
 
typedef int reg_class_t
 
typedef std::pair< tree, treetree_pair
 
typedef std::pair< const char *, int > string_int_pair
 
typedef void(* gt_pointer_operator) (void *, void *, void *)
 
typedef unsigned char uchar
 

Enumerations

enum  ir_type { IR_GIMPLE , IR_RTL_CFGRTL , IR_RTL_CFGLAYOUT }
 
enum  tls_model {
  TLS_MODEL_NONE , TLS_MODEL_EMULATED , TLS_MODEL_REAL , TLS_MODEL_GLOBAL_DYNAMIC = TLS_MODEL_REAL ,
  TLS_MODEL_LOCAL_DYNAMIC , TLS_MODEL_INITIAL_EXEC , TLS_MODEL_LOCAL_EXEC
}
 
enum  trampoline_impl { TRAMPOLINE_IMPL_STACK , TRAMPOLINE_IMPL_HEAP }
 
enum  offload_abi { OFFLOAD_ABI_UNSET , OFFLOAD_ABI_LP64 , OFFLOAD_ABI_ILP32 }
 
enum  profile_update { PROFILE_UPDATE_SINGLE , PROFILE_UPDATE_ATOMIC , PROFILE_UPDATE_PREFER_ATOMIC }
 
enum  profile_reproducibility { PROFILE_REPRODUCIBILITY_SERIAL , PROFILE_REPRODUCIBILITY_PARALLEL_RUNS , PROFILE_REPRODUCIBILITY_MULTITHREADED }
 
enum  stack_protector { SPCT_FLAG_DEFAULT = 1 , SPCT_FLAG_ALL = 2 , SPCT_FLAG_STRONG = 3 , SPCT_FLAG_EXPLICIT = 4 }
 
enum  unwind_info_type {
  UI_NONE , UI_SJLJ , UI_DWARF2 , UI_SEH ,
  UI_TARGET
}
 
enum  node_frequency { NODE_FREQUENCY_UNLIKELY_EXECUTED , NODE_FREQUENCY_EXECUTED_ONCE , NODE_FREQUENCY_NORMAL , NODE_FREQUENCY_HOT }
 
enum  optimization_type { OPTIMIZE_FOR_SPEED , OPTIMIZE_FOR_BOTH , OPTIMIZE_FOR_SIZE }
 
enum  pad_direction { PAD_NONE , PAD_UPWARD , PAD_DOWNWARD }
 
enum  var_init_status { VAR_INIT_STATUS_UNKNOWN , VAR_INIT_STATUS_UNINITIALIZED , VAR_INIT_STATUS_INITIALIZED }
 
enum  warn_strict_overflow_code {
  WARN_STRICT_OVERFLOW_ALL = 1 , WARN_STRICT_OVERFLOW_CONDITIONAL = 2 , WARN_STRICT_OVERFLOW_COMPARISON = 3 , WARN_STRICT_OVERFLOW_MISC = 4 ,
  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
}
 
enum  function_class {
  function_c94 , function_c99_misc , function_c99_math_complex , function_sincos ,
  function_c11_misc , function_c23_misc
}
 
enum  symbol_visibility { VISIBILITY_DEFAULT , VISIBILITY_PROTECTED , VISIBILITY_HIDDEN , VISIBILITY_INTERNAL }
 
enum  flt_eval_method {
  FLT_EVAL_METHOD_UNPREDICTABLE = -1 , FLT_EVAL_METHOD_PROMOTE_TO_FLOAT = 0 , FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE = 1 , FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE = 2 ,
  FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 = 16
}
 
enum  excess_precision_type { EXCESS_PRECISION_TYPE_IMPLICIT , EXCESS_PRECISION_TYPE_STANDARD , EXCESS_PRECISION_TYPE_FAST , EXCESS_PRECISION_TYPE_FLOAT16 }
 
enum  optimize_size_level { OPTIMIZE_SIZE_NO , OPTIMIZE_SIZE_BALANCED , OPTIMIZE_SIZE_MAX }
 

Macro Definition Documentation

◆ ADDR_SPACE_GENERIC

◆ ADDR_SPACE_GENERIC_P

◆ gcc_obstack_init

◆ GTY

#define GTY ( x)    /* nothing - marker for gengtype @endverbatim */
GCC core type declarations.
   Copyright (C) 2002-2024 Free Software Foundation, Inc.

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.

You should have received a copy of the GNU General Public License and
a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
<http://www.gnu.org/licenses/>.   
Provide forward declarations of core types which are referred to by
most of the compiler.  This allows header files to use these types
(e.g. in function prototypes) without concern for whether the full
definitions are visible.  Some other declarations that need to be
universally visible are here, too.

In the context of tconfig.h, most of these have special definitions
which prevent them from being used except in further type
declarations.  This is a kludge; the right thing is to avoid
including the "tm.h" header set in the context of tconfig.h, but
we're not there yet.   

◆ obstack_chunk_alloc

◆ obstack_chunk_free

◆ OBSTACK_CHUNK_SIZE

◆ POLY_INT_CONVERSION

#define POLY_INT_CONVERSION   0
Most source files will require the following headers.   
On targets that don't need polynomial offsets, target-specific code
should be able to treat poly_int like a normal constant, with a
conversion operator going from the former to the latter.  We also
allow this for gencondmd.cc for all targets, so that we can treat
machine_modes as enums without causing build failures.   

Typedef Documentation

◆ addr_space_t

typedef unsigned char addr_space_t
Address space number for named address space support.   

◆ alias_set_type

typedef int alias_set_type
The type of an alias set.  Code currently assumes that variables of
this type can take the values 0 (the alias set which aliases
everything) and -1 (sometimes indicating that the alias set is
unknown, sometimes indicating a memory barrier) and -2 (indicating
that the alias set should be set to a unique value but has not been
set yet).   

◆ basic_block

typedef struct basic_block_def* basic_block

◆ bitmap

typedef class bitmap_head* bitmap

◆ const_basic_block

typedef const struct basic_block_def* const_basic_block

◆ const_bitmap

typedef const class bitmap_head* const_bitmap

◆ const_edge

typedef const class edge_def* const_edge

◆ const_hwivec

typedef const struct hwivec_def* const_hwivec

◆ const_rtvec

typedef const struct rtvec_def* const_rtvec

◆ const_rtx

typedef const struct rtx_def* const_rtx

◆ const_sbitmap

typedef const struct simple_bitmap_def* const_sbitmap

◆ const_tree

typedef const union tree_node* const_tree

◆ diagnostic_input_charset_callback

typedef const char *(* diagnostic_input_charset_callback) (const char *)

◆ edge

typedef class edge_def* edge

◆ fixed_size_mode_pod

◆ gcov_type

typedef int64_t gcov_type

◆ gcov_type_unsigned

typedef uint64_t gcov_type_unsigned

◆ gimple_seq

typedef gimple* gimple_seq

◆ gt_pointer_operator

typedef void(* gt_pointer_operator) (void *, void *, void *)
Support for user-provided GGC and PCH markers.  The first parameter
is a pointer to a pointer, the second either NULL if the pointer to
pointer points into a GC object or the actual pointer address if
the first argument points to a temporary and the third a cookie.   

◆ hwivec

typedef struct hwivec_def* hwivec

◆ opt_scalar_float_mode

◆ opt_scalar_int_mode

◆ opt_scalar_mode

◆ reg_class_t

typedef int reg_class_t
enum reg_class is target specific, so it should not appear in
target-independent code or interfaces, like the target hook declarations
in target.h.   

◆ rtvec

typedef struct rtvec_def* rtvec

◆ rtx

typedef struct rtx_def* rtx

◆ sbitmap

typedef struct simple_bitmap_def* sbitmap

◆ scalar_int_mode_pod

◆ scalar_mode_pod

◆ section

typedef union section section

◆ string_int_pair

typedef std::pair<const char *, int> string_int_pair

◆ tree

typedef union tree_node* tree

◆ tree_pair

typedef std::pair<tree, tree> tree_pair

◆ uchar

typedef unsigned char uchar

Enumeration Type Documentation

◆ excess_precision_type

Enumerator
EXCESS_PRECISION_TYPE_IMPLICIT 
EXCESS_PRECISION_TYPE_STANDARD 
EXCESS_PRECISION_TYPE_FAST 
EXCESS_PRECISION_TYPE_FLOAT16 

◆ flt_eval_method

enums used by the targetm.excess_precision hook.   
Enumerator
FLT_EVAL_METHOD_UNPREDICTABLE 
FLT_EVAL_METHOD_PROMOTE_TO_FLOAT 
FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE 
FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE 
FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 

◆ function_class

Classes of functions that compiler needs to check
whether they are present at the runtime or not.   
Enumerator
function_c94 
function_c99_misc 
function_c99_math_complex 
function_sincos 
function_c11_misc 
function_c23_misc 

◆ ir_type

enum ir_type
The major intermediate representations of GCC.   
Enumerator
IR_GIMPLE 
IR_RTL_CFGRTL 
IR_RTL_CFGLAYOUT 

◆ node_frequency

Callgraph node profile representation.   
Enumerator
NODE_FREQUENCY_UNLIKELY_EXECUTED 
NODE_FREQUENCY_EXECUTED_ONCE 
NODE_FREQUENCY_NORMAL 
NODE_FREQUENCY_HOT 

◆ offload_abi

Types of ABI for an offload compiler.   
Enumerator
OFFLOAD_ABI_UNSET 
OFFLOAD_ABI_LP64 
OFFLOAD_ABI_ILP32 

◆ optimization_type

Ways of optimizing code.   
Enumerator
OPTIMIZE_FOR_SPEED 
OPTIMIZE_FOR_BOTH 
OPTIMIZE_FOR_SIZE 

◆ optimize_size_level

Level of size optimization.   
Enumerator
OPTIMIZE_SIZE_NO 
OPTIMIZE_SIZE_BALANCED 
OPTIMIZE_SIZE_MAX 

◆ pad_direction

Enumerates a padding direction.   
Enumerator
PAD_NONE 
PAD_UPWARD 
PAD_DOWNWARD 

◆ profile_reproducibility

Type of profile reproducibility methods.   
Enumerator
PROFILE_REPRODUCIBILITY_SERIAL 
PROFILE_REPRODUCIBILITY_PARALLEL_RUNS 
PROFILE_REPRODUCIBILITY_MULTITHREADED 

◆ profile_update

Types of profile update methods.   
Enumerator
PROFILE_UPDATE_SINGLE 
PROFILE_UPDATE_ATOMIC 
PROFILE_UPDATE_PREFER_ATOMIC 

◆ stack_protector

Type of -fstack-protector-*.   
Enumerator
SPCT_FLAG_DEFAULT 
SPCT_FLAG_ALL 
SPCT_FLAG_STRONG 
SPCT_FLAG_EXPLICIT 

◆ symbol_visibility

Enumerate visibility settings.  This is deliberately ordered from most
to least visibility.   
Enumerator
VISIBILITY_DEFAULT 
VISIBILITY_PROTECTED 
VISIBILITY_HIDDEN 
VISIBILITY_INTERNAL 

◆ tls_model

enum tls_model
The thread-local storage model associated with a given VAR_DECL
or SYMBOL_REF.  This isn't used much, but both trees and RTL refer
to it, so it's here.   
Enumerator
TLS_MODEL_NONE 
TLS_MODEL_EMULATED 
TLS_MODEL_REAL 
TLS_MODEL_GLOBAL_DYNAMIC 
TLS_MODEL_LOCAL_DYNAMIC 
TLS_MODEL_INITIAL_EXEC 
TLS_MODEL_LOCAL_EXEC 

◆ trampoline_impl

Types of trampoline implementation.   
Enumerator
TRAMPOLINE_IMPL_STACK 
TRAMPOLINE_IMPL_HEAP 

◆ unwind_info_type

Types of unwind/exception handling info that can be generated.
Note that a UI_TARGET (or larger) setting is considered to be
incompatible with -freorder-blocks-and-partition.   
Enumerator
UI_NONE 
UI_SJLJ 
UI_DWARF2 
UI_SEH 
UI_TARGET 

◆ var_init_status

Possible initialization status of a variable.   When requested
by the user, this information is tracked and recorded in the DWARF
debug information, along with the variable's location.   
Enumerator
VAR_INIT_STATUS_UNKNOWN 
VAR_INIT_STATUS_UNINITIALIZED 
VAR_INIT_STATUS_INITIALIZED 

◆ warn_strict_overflow_code

Names for the different levels of -Wstrict-overflow=N.  The numeric
values here correspond to N.   
Enumerator
WARN_STRICT_OVERFLOW_ALL 
WARN_STRICT_OVERFLOW_CONDITIONAL 
WARN_STRICT_OVERFLOW_COMPARISON 
WARN_STRICT_OVERFLOW_MISC 
WARN_STRICT_OVERFLOW_MAGNITUDE