GCC Middle and Back End API Reference
|
#include "hashtab.h"
#include "machmode.h"
#include "input.h"
#include "statistics.h"
#include "vec.h"
#include "double-int.h"
#include "real.h"
#include "fixed-value.h"
#include "alias.h"
#include "flags.h"
#include "symtab.h"
#include "all-tree.def"
#include "builtins.def"
#include "treestruct.def"
Go to the source code of this file.
Data Structures | |
struct | alias_pair |
struct | tree_base |
struct | tree_typed |
struct | tree_common |
struct | tree_int_cst |
struct | tree_real_cst |
struct | tree_fixed_cst |
struct | tree_string |
struct | tree_complex |
struct | tree_vector |
struct | tree_identifier |
struct | tree_list |
struct | tree_vec |
struct | constructor_elt_d |
struct | tree_constructor |
struct | tree_exp |
struct | ssa_use_operand_d |
Macros | |
#define | ECF_CONST (1 << 0) |
#define | ECF_PURE (1 << 1) |
#define | ECF_LOOPING_CONST_OR_PURE (1 << 2) |
#define | ECF_NORETURN (1 << 3) |
#define | ECF_MALLOC (1 << 4) |
#define | ECF_MAY_BE_ALLOCA (1 << 5) |
#define | ECF_NOTHROW (1 << 6) |
#define | ECF_RETURNS_TWICE (1 << 7) |
#define | ECF_SIBCALL (1 << 8) |
#define | ECF_NOVOPS (1 << 9) |
#define | ECF_LEAF (1 << 10) |
#define | ECF_TM_PURE (1 << 11) |
#define | ECF_TM_BUILTIN (1 << 12) |
#define | EAF_DIRECT (1 << 0) |
#define | EAF_NOCLOBBER (1 << 1) |
#define | EAF_NOESCAPE (1 << 2) |
#define | EAF_UNUSED (1 << 3) |
#define | ERF_RETURN_ARG_MASK (3) |
#define | ERF_RETURNS_ARG (1 << 2) |
#define | ERF_NOALIAS (1 << 3) |
#define | DEFTREECODE(SYM, STRING, TYPE, NARGS) SYM, |
#define | END_OF_BASE_TREE_CODES LAST_AND_UNUSED_TREE_CODE, |
#define | NUM_TREE_CODES ((int) LAST_AND_UNUSED_TREE_CODE) |
#define | CODE_CONTAINS_STRUCT(CODE, STRUCT) (tree_contains_struct[(CODE)][(STRUCT)]) |
#define | BUILT_IN_LAST (BUILT_IN_NORMAL + 1) |
#define | DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, AT, IM, COND) ENUM, |
#define | DEFTREESTRUCT(ENUM, NAME) ENUM, |
Typedefs | |
typedef struct alias_pair | alias_pair |
typedef unsigned short | priority_type |
typedef tree(* | walk_tree_fn )(tree *, int *, void *) |
typedef tree(* | walk_tree_lh )(tree *, int *, tree(*)(tree *, int *, void *), void *, struct pointer_set_t *) |
typedef struct constructor_elt_d | constructor_elt |
typedef struct ssa_use_operand_d | ssa_use_operand_t |
#define BUILT_IN_LAST (BUILT_IN_NORMAL + 1) |
Last marker used for LTO stremaing of built_in_class. We can not add it to the enum since we need the enumb to fit in 2 bits.
#define CODE_CONTAINS_STRUCT | ( | CODE, | |
STRUCT | |||
) | (tree_contains_struct[(CODE)][(STRUCT)]) |
Referenced by set_random_seed(), and streamer_read_tree_bitfields().
Codes that identify the various built in functions so that expand_call can identify them quickly.
#define DEFTREECODE | ( | SYM, | |
STRING, | |||
TYPE, | |||
NARGS | |||
) | SYM, |
Codes of tree nodes.
#define DEFTREESTRUCT | ( | ENUM, | |
NAME | |||
) | ENUM, |
#define EAF_DIRECT (1 << 0) |
Call argument flags. Nonzero if the argument is not dereferenced recursively, thus only directly reachable memory is read or written.
Referenced by gimple_set_body().
#define EAF_NOCLOBBER (1 << 1) |
Nonzero if memory reached by the argument is not clobbered.
Referenced by gimple_set_body().
#define EAF_NOESCAPE (1 << 2) |
Nonzero if the argument does not escape.
Referenced by gimple_set_body().
#define EAF_UNUSED (1 << 3) |
Nonzero if the argument is not used by the function.
Referenced by gimple_set_body().
#define ECF_CONST (1 << 0) |
Nonzero if this is a call to a function whose return value depends solely on its arguments, has no side effects, and does not read global memory. This corresponds to TREE_READONLY for function decls.
Referenced by do_partial_partial_insertion(), replace_phi_args_in(), and vect_get_vec_defs_for_stmt_copy().
#define ECF_LEAF (1 << 10) |
The function does not lead to calls within current function unit.
Referenced by find_case_label_for_value(), ipa_reference_get_not_read_global(), set_reference_optimization_summary(), and special_function_p().
#define ECF_LOOPING_CONST_OR_PURE (1 << 2) |
Nonzero if this is ECF_CONST or ECF_PURE but cannot be proven to no infinite loop. This corresponds to DECL_LOOPING_CONST_OR_PURE_P for function decls.
Referenced by do_partial_partial_insertion(), flags_from_decl_or_type(), initialize_argument_information(), and replace_phi_args_in().
#define ECF_MALLOC (1 << 4) |
Nonzero if this is a call to malloc or a related function.
Referenced by gimple_body().
#define ECF_MAY_BE_ALLOCA (1 << 5) |
Nonzero if it is plausible that this is a call to alloca.
#define ECF_NORETURN (1 << 3) |
Nonzero if this call will never return.
Referenced by dump_possible_polymorphic_call_targets(), flags_from_decl_or_type(), and special_function_p().
#define ECF_NOTHROW (1 << 6) |
Nonzero if this is a call to a function that won't throw an exception.
Referenced by cgraph_for_node_and_aliases(), dump_function_to_file(), and remove_eh_handler().
#define ECF_NOVOPS (1 << 9) |
Function does not read or write memory (but may have side effects, so it does not necessarily fit ECF_CONST).
Referenced by vect_get_vec_defs_for_stmt_copy().
#define ECF_PURE (1 << 1) |
Nonzero if this is a call to "pure" function (like const function, but may read memory. This corresponds to DECL_PURE_P for function decls.
Referenced by initialize_argument_information(), replace_phi_args_in(), and vect_get_vec_defs_for_stmt_copy().
#define ECF_RETURNS_TWICE (1 << 7) |
Nonzero if this is a call to setjmp or a related function.
Referenced by dump_function_to_file().
#define ECF_SIBCALL (1 << 8) |
Nonzero if this call replaces the current stack frame.
#define ECF_TM_BUILTIN (1 << 12) |
Nonzero if this call is into the transaction runtime library.
#define ECF_TM_PURE (1 << 11) |
Nonzero if this call does not affect transactions.
#define END_OF_BASE_TREE_CODES LAST_AND_UNUSED_TREE_CODE, |
#define ERF_NOALIAS (1 << 3) |
Nonzero if the return value does not alias with anything. Functions with the malloc attribute have this set on their return value.
Referenced by gimple_body().
#define ERF_RETURN_ARG_MASK (3) |
Call return flags. Mask for the argument number that is returned. Lower two bits of the return flags, encodes argument slots zero to three.
#define ERF_RETURNS_ARG (1 << 2) |
Nonzero if the return value is equal to the argument number flags & ERF_RETURN_ARG_MASK.
#define NUM_TREE_CODES ((int) LAST_AND_UNUSED_TREE_CODE) |
Number of language-independent tree codes.
typedef struct alias_pair alias_pair |
When processing aliases at the symbol table level, we need the declaration of target. For this reason we need to queue aliases and process them after all declarations has been produced.
typedef struct constructor_elt_d constructor_elt |
A single element of a CONSTRUCTOR. VALUE holds the actual value of the element. INDEX can optionally design the position of VALUE: in arrays, it is the index where VALUE has to be placed; in structures, it is the FIELD_DECL of the member.
typedef unsigned short priority_type |
An initialization priority.
typedef struct ssa_use_operand_d ssa_use_operand_t |
Immediate use linking structure. This structure is used for maintaining a doubly linked list of uses of an SSA_NAME.
The type of a callback function for walking over tree structure.
typedef tree(* walk_tree_lh)(tree *, int *, tree(*)(tree *, int *, void *), void *, struct pointer_set_t *) |
The type of a callback function that represents a custom walk_tree.
enum annot_expr_kind |
enum attribute_flags |
Flags that may be passed in the third argument of decl_attributes, and to handler functions for attributes.
enum built_in_class |
enum built_in_function |
enum cv_qualifier |
enum integer_type_kind |
An enumeration of the standard C integer types. These must be ordered so that shorter types appear before longer ones, and so that signed types appear before unsigned ones, for the correct functioning of interpret_integer() in c-lex.c.
enum omp_clause_code |
OMP_CLAUSE codes. Do not reorder, as this is used to index into the tables omp_clause_num_ops and omp_clause_code_name.
enum omp_clause_map_kind |
enum operand_equal_flag |
A pointer-to-function member type looks like:
struct { __P __pfn; ptrdiff_t __delta; };
If __pfn is NULL, it is a NULL pointer-to-member-function.
(Because the vtable is always the first thing in the object, we don't need its offset.) If the function is virtual, then PFN is one plus twice the index into the vtable; otherwise, it is just a pointer to the function.
Unfortunately, using the lowest bit of PFN doesn't work in architectures that don't impose alignment requirements on function addresses, or that use the lowest bit to tell one ISA from another, for example. For such architectures, we use the lowest bit of DELTA instead of the lowest bit of the PFN, and DELTA will be multiplied by 2.
enum size_type_kind |
enum tree_code |
enum tree_code_class |
Tree code classes. Each tree_code has an associated code class represented by a TREE_CODE_CLASS.
enum tree_index |
Enumerate visibility settings. Standard named or nameless data types of the C compiler.
enum tree_node_kind |
Enum and arrays used for tree allocation stats. Keep in sync with tree.c:tree_node_kind_names.
LAST_TS_ENUM |
This file contains the definitions for the tree structure enumeration used in GCC. Copyright (C) 2005-2013 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. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/. The format of this file is DEFTREESTRUCT(enumeration value, printable name). Each enumeration value should correspond with a single member of union tree_node. These enumerator values are used in order to distinguish members of union tree_node for garbage collection purposes, as well as specifying what structures contain what other structures in the tree_contains_struct array. |