Commit 62107106 by Eric Botcazou

* tree.h: Fix truncated long macros.

From-SVN: r158792
parent ad211091
2010-04-27 Eric Botcazou <ebotcazou@adacore.com>
* tree.h: Fix truncated long macros.
2010-04-27 Kai Tietz <kai.tietz@onevision.com> 2010-04-27 Kai Tietz <kai.tietz@onevision.com>
* collect2.c (TARGET_64BIT): Redefine to target's default. * collect2.c (TARGET_64BIT): Redefine to target's default.
...@@ -27,8 +31,8 @@ ...@@ -27,8 +31,8 @@
* opts.c (decode_options): Enable ipa-profile at -O1. * opts.c (decode_options): Enable ipa-profile at -O1.
* timevar.def (TV_IPA_PROFILE): Define. * timevar.def (TV_IPA_PROFILE): Define.
* common.opt (fipa-profile): Add. * common.opt (fipa-profile): Add.
* cgraph.c (cgraph_clone_node): Set local flag and clear vtable method flag * cgraph.c (cgraph_clone_node): Set local flag and clear vtable method
for clones. flag for clones.
(cgraph_propagate_frequency): Handle only local ones. (cgraph_propagate_frequency): Handle only local ones.
* tree-pass.h (pass_ipa_profile): Declare. * tree-pass.h (pass_ipa_profile): Declare.
* ipa-profile.c (gate_profile): Use flag_ipa_profile. * ipa-profile.c (gate_profile): Use flag_ipa_profile.
......
...@@ -1419,7 +1419,8 @@ struct GTY(()) tree_real_cst { ...@@ -1419,7 +1419,8 @@ struct GTY(()) tree_real_cst {
/* In a FIXED_CST node. */ /* In a FIXED_CST node. */
struct fixed_value; struct fixed_value;
#define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr) #define TREE_FIXED_CST_PTR(NODE) \
(FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr)
#define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE)) #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE))
struct GTY(()) tree_fixed_cst { struct GTY(()) tree_fixed_cst {
...@@ -1506,7 +1507,8 @@ struct GTY(()) tree_vec { ...@@ -1506,7 +1507,8 @@ struct GTY(()) tree_vec {
#define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts) #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
#define CONSTRUCTOR_ELT(NODE,IDX) \ #define CONSTRUCTOR_ELT(NODE,IDX) \
(VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX)) (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
#define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE))) #define CONSTRUCTOR_NELTS(NODE) \
(VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE)))
/* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the /* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the
value of each element (stored within VAL). IX must be a scratch variable value of each element (stored within VAL). IX must be a scratch variable
...@@ -1587,7 +1589,8 @@ struct GTY(()) tree_constructor { ...@@ -1587,7 +1589,8 @@ struct GTY(()) tree_constructor {
/* The source location of this expression. Non-tree_exp nodes such as /* The source location of this expression. Non-tree_exp nodes such as
decls and constants can be shared among multiple locations, so decls and constants can be shared among multiple locations, so
return nothing. */ return nothing. */
#define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION) #define EXPR_LOCATION(NODE) \
(EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
#define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS) #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
#define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION) #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
#define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus) #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
...@@ -1882,7 +1885,7 @@ struct GTY(()) tree_exp { ...@@ -1882,7 +1885,7 @@ struct GTY(()) tree_exp {
the very first reference to S in the function is a read operation. the very first reference to S in the function is a read operation.
Default definitions are always created by an empty statement and Default definitions are always created by an empty statement and
belong to no basic block. */ belong to no basic block. */
#define SSA_NAME_IS_DEFAULT_DEF(NODE) \ #define SSA_NAME_IS_DEFAULT_DEF(NODE) \
SSA_NAME_CHECK (NODE)->base.default_def_flag SSA_NAME_CHECK (NODE)->base.default_def_flag
/* Attributes for SSA_NAMEs for pointer-type variables. */ /* Attributes for SSA_NAMEs for pointer-type variables. */
...@@ -1975,9 +1978,12 @@ struct varray_head_tag; ...@@ -1975,9 +1978,12 @@ struct varray_head_tag;
/* In a BLOCK node. */ /* In a BLOCK node. */
#define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars) #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
#define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars) #define BLOCK_NONLOCALIZED_VARS(NODE) \
#define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) (BLOCK_CHECK (NODE)->block.nonlocalized_vars)
#define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) \
VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE))
#define BLOCK_NONLOCALIZED_VAR(NODE,N) \
VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N)
#define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks) #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
#define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext) #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
/* Note: when changing this, make sure to find the places /* Note: when changing this, make sure to find the places
...@@ -2118,7 +2124,8 @@ extern enum machine_mode vector_type_mode (const_tree); ...@@ -2118,7 +2124,8 @@ extern enum machine_mode vector_type_mode (const_tree);
/* For a VECTOR_TYPE node, this describes a different type which is emitted /* For a VECTOR_TYPE node, this describes a different type which is emitted
in the debugging output. We use this to describe a vector as a in the debugging output. We use this to describe a vector as a
structure containing an array. */ structure containing an array. */
#define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values) #define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) \
(VECTOR_TYPE_CHECK (NODE)->type.values)
/* For record and union types, information about this type, as a base type /* For record and union types, information about this type, as a base type
for itself. */ for itself. */
...@@ -2504,18 +2511,23 @@ struct function; ...@@ -2504,18 +2511,23 @@ struct function;
/* Every ..._DECL node gets a unique number that stays the same even /* Every ..._DECL node gets a unique number that stays the same even
when the decl is copied by the inliner once it is set. */ when the decl is copied by the inliner once it is set. */
#define DECL_PT_UID(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u ? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid) #define DECL_PT_UID(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u \
? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid)
/* Initialize the ..._DECL node pt-uid to the decls uid. */ /* Initialize the ..._DECL node pt-uid to the decls uid. */
#define SET_DECL_PT_UID(NODE, UID) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID)) #define SET_DECL_PT_UID(NODE, UID) \
(DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID))
/* Whether the ..._DECL node pt-uid has been initialized and thus needs to /* Whether the ..._DECL node pt-uid has been initialized and thus needs to
be preserved when copyin the decl. */ be preserved when copyin the decl. */
#define DECL_PT_UID_SET_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u) #define DECL_PT_UID_SET_P(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u)
/* These two fields describe where in the source code the declaration /* These two fields describe where in the source code the declaration
was. If the declaration appears in several places (as for a C was. If the declaration appears in several places (as for a C
function that is declared first and then defined later), this function that is declared first and then defined later), this
information should refer to the definition. */ information should refer to the definition. */
#define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus) #define DECL_SOURCE_LOCATION(NODE) \
(DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus)
#define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE)) #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE))
#define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE)) #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE))
#define DECL_IS_BUILTIN(DECL) \ #define DECL_IS_BUILTIN(DECL) \
...@@ -2529,7 +2541,8 @@ struct function; ...@@ -2529,7 +2541,8 @@ struct function;
NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file
scope". */ scope". */
#define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context) #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context)
#define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context) #define DECL_FIELD_CONTEXT(NODE) \
(FIELD_DECL_CHECK (NODE)->decl_minimal.context)
struct GTY(()) tree_decl_minimal { struct GTY(()) tree_decl_minimal {
struct tree_common common; struct tree_common common;
location_t locus; location_t locus;
...@@ -2545,7 +2558,8 @@ struct GTY(()) tree_decl_minimal { ...@@ -2545,7 +2558,8 @@ struct GTY(()) tree_decl_minimal {
The C front-end also uses this in a nested declaration of an inline The C front-end also uses this in a nested declaration of an inline
function, to point back to the definition. */ function, to point back to the definition. */
#define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin) #define DECL_ABSTRACT_ORIGIN(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin)
/* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract
origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */ origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */
...@@ -2556,11 +2570,13 @@ struct GTY(()) tree_decl_minimal { ...@@ -2556,11 +2570,13 @@ struct GTY(()) tree_decl_minimal {
inline instance of some original (abstract) decl from an inline function; inline instance of some original (abstract) decl from an inline function;
suppress any warnings about shadowing some other variable. FUNCTION_DECL suppress any warnings about shadowing some other variable. FUNCTION_DECL
nodes can also have their abstract origin set to themselves. */ nodes can also have their abstract origin set to themselves. */
#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \ #define DECL_FROM_INLINE(NODE) \
&& DECL_ABSTRACT_ORIGIN (NODE) != (NODE)) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \
&& DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
/* In a DECL this is the field where attributes are stored. */ /* In a DECL this is the field where attributes are stored. */
#define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes) #define DECL_ATTRIBUTES(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.attributes)
/* For a FUNCTION_DECL, holds the tree of BINDINGs. /* For a FUNCTION_DECL, holds the tree of BINDINGs.
For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK. For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK.
...@@ -2585,7 +2601,8 @@ struct GTY(()) tree_decl_minimal { ...@@ -2585,7 +2601,8 @@ struct GTY(()) tree_decl_minimal {
#define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT) #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
/* Set if the alignment of this DECL has been set by the user, for /* Set if the alignment of this DECL has been set by the user, for
example with an 'aligned' attribute. */ example with an 'aligned' attribute. */
#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align) #define DECL_USER_ALIGN(NODE) \
(DECL_COMMON_CHECK (NODE)->common.base.user_align)
/* Holds the machine mode corresponding to the declaration of a variable or /* Holds the machine mode corresponding to the declaration of a variable or
field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a
FIELD_DECL. */ FIELD_DECL. */
...@@ -2606,7 +2623,8 @@ struct GTY(()) tree_decl_minimal { ...@@ -2606,7 +2623,8 @@ struct GTY(()) tree_decl_minimal {
/* Nonzero for a given ..._DECL node means that the name of this node should /* Nonzero for a given ..._DECL node means that the name of this node should
be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL, be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL,
the body of the function should also be ignored. */ the body of the function should also be ignored. */
#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag) #define DECL_IGNORED_P(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
/* Nonzero for a given ..._DECL node means that this node represents an /* Nonzero for a given ..._DECL node means that this node represents an
"abstract instance" of the given declaration (e.g. in the original "abstract instance" of the given declaration (e.g. in the original
...@@ -2614,10 +2632,12 @@ struct GTY(()) tree_decl_minimal { ...@@ -2614,10 +2632,12 @@ struct GTY(()) tree_decl_minimal {
information, we mustn't try to generate any address information for nodes information, we mustn't try to generate any address information for nodes
marked as "abstract instances" because we don't actually generate marked as "abstract instances" because we don't actually generate
any code or allocate any data space for such instances. */ any code or allocate any data space for such instances. */
#define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag) #define DECL_ABSTRACT(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag)
/* Language-specific decl information. */ /* Language-specific decl information. */
#define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific) #define DECL_LANG_SPECIFIC(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_specific)
/* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference: /* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference:
do not allocate storage, and refer to a definition elsewhere. Note that do not allocate storage, and refer to a definition elsewhere. Note that
...@@ -2635,26 +2655,38 @@ struct GTY(()) tree_decl_minimal { ...@@ -2635,26 +2655,38 @@ struct GTY(()) tree_decl_minimal {
Also set in some languages for variables, etc., outside the normal Also set in some languages for variables, etc., outside the normal
lexical scope, such as class instance variables. */ lexical scope, such as class instance variables. */
#define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag) #define DECL_NONLOCAL(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag)
/* Used in VAR_DECLs to indicate that the variable is a vtable. /* Used in VAR_DECLs to indicate that the variable is a vtable.
Used in FIELD_DECLs for vtable pointers. Used in FIELD_DECLs for vtable pointers.
Used in FUNCTION_DECLs to indicate that the function is virtual. */ Used in FUNCTION_DECLs to indicate that the function is virtual. */
#define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag) #define DECL_VIRTUAL_P(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag)
/* Used to indicate that this DECL represents a compiler-generated entity. */ /* Used to indicate that this DECL represents a compiler-generated entity. */
#define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag) #define DECL_ARTIFICIAL(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag)
/* Additional flags for language-specific uses. */ /* Additional flags for language-specific uses. */
#define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0) #define DECL_LANG_FLAG_0(NODE) \
#define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0)
#define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2) #define DECL_LANG_FLAG_1(NODE) \
#define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1)
#define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4) #define DECL_LANG_FLAG_2(NODE) \
#define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2)
#define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6) #define DECL_LANG_FLAG_3(NODE) \
#define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3)
#define DECL_LANG_FLAG_8(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8) #define DECL_LANG_FLAG_4(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4)
#define DECL_LANG_FLAG_5(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5)
#define DECL_LANG_FLAG_6(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6)
#define DECL_LANG_FLAG_7(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7)
#define DECL_LANG_FLAG_8(NODE) \
(DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8)
/* Nonzero for a decl which is at file scope. */ /* Nonzero for a decl which is at file scope. */
#define DECL_FILE_SCOPE_P(EXP) \ #define DECL_FILE_SCOPE_P(EXP) \
...@@ -2755,7 +2787,7 @@ extern void decl_value_expr_insert (tree, tree); ...@@ -2755,7 +2787,7 @@ extern void decl_value_expr_insert (tree, tree);
(TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2) (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2)
#define DECL_VALUE_EXPR(NODE) \ #define DECL_VALUE_EXPR(NODE) \
(decl_value_expr_lookup (DECL_WRTL_CHECK (NODE))) (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
#define SET_DECL_VALUE_EXPR(NODE, VAL) \ #define SET_DECL_VALUE_EXPR(NODE, VAL) \
(decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL)) (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL))
/* Holds the RTL expression for the value of a variable or function. /* Holds the RTL expression for the value of a variable or function.
...@@ -2773,12 +2805,14 @@ extern void decl_value_expr_insert (tree, tree); ...@@ -2773,12 +2805,14 @@ extern void decl_value_expr_insert (tree, tree);
#define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL)) #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL))
/* Returns nonzero if the DECL_RTL for NODE has already been set. */ /* Returns nonzero if the DECL_RTL for NODE has already been set. */
#define DECL_RTL_SET_P(NODE) (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL) #define DECL_RTL_SET_P(NODE) \
(HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL)
/* Copy the RTL from NODE1 to NODE2. If the RTL was not set for /* Copy the RTL from NODE1 to NODE2. If the RTL was not set for
NODE1, it will not be set for NODE2; this is a lazy copy. */ NODE1, it will not be set for NODE2; this is a lazy copy. */
#define COPY_DECL_RTL(NODE1, NODE2) \ #define COPY_DECL_RTL(NODE1, NODE2) \
(DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl) (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl \
= DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl)
/* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */ /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */
#define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL) #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
...@@ -2800,12 +2834,14 @@ struct GTY(()) tree_decl_with_rtl { ...@@ -2800,12 +2834,14 @@ struct GTY(()) tree_decl_with_rtl {
field from DECL_FIELD_OFFSET. This field may be nonzero even for fields field from DECL_FIELD_OFFSET. This field may be nonzero even for fields
that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the
natural alignment of the field's type). */ natural alignment of the field's type). */
#define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) #define DECL_FIELD_BIT_OFFSET(NODE) \
(FIELD_DECL_CHECK (NODE)->field_decl.bit_offset)
/* In a FIELD_DECL, this indicates whether the field was a bit-field and /* In a FIELD_DECL, this indicates whether the field was a bit-field and
if so, the type that was originally specified for it. if so, the type that was originally specified for it.
TREE_TYPE may have been modified (in finish_struct). */ TREE_TYPE may have been modified (in finish_struct). */
#define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type) #define DECL_BIT_FIELD_TYPE(NODE) \
(FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type)
/* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which /* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which
if nonzero, indicates that the field occupies the type. */ if nonzero, indicates that the field occupies the type. */
...@@ -2902,7 +2938,8 @@ struct GTY(()) tree_const_decl { ...@@ -2902,7 +2938,8 @@ struct GTY(()) tree_const_decl {
/* For PARM_DECL, holds an RTL for the stack slot or register /* For PARM_DECL, holds an RTL for the stack slot or register
where the data was actually passed. */ where the data was actually passed. */
#define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) #define DECL_INCOMING_RTL(NODE) \
(PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl)
struct GTY(()) tree_parm_decl { struct GTY(()) tree_parm_decl {
struct tree_decl_with_rtl common; struct tree_decl_with_rtl common;
...@@ -2911,25 +2948,38 @@ struct GTY(()) tree_parm_decl { ...@@ -2911,25 +2948,38 @@ struct GTY(()) tree_parm_decl {
}; };
/* Nonzero in a decl means that the gimplifier has seen (or placed)
this variable in a BIND_EXPR. */
#define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
/* Used to indicate that the linkage status of this DECL is not yet known,
so it should not be output now. */
#define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
/* Nonzero for a given ..._DECL node means that no warnings should be /* Nonzero for a given ..._DECL node means that no warnings should be
generated just because this node is unused. */ generated just because this node is unused. */
#define DECL_IN_SYSTEM_HEADER(NODE) \ #define DECL_IN_SYSTEM_HEADER(NODE) \
(in_system_header_at (DECL_SOURCE_LOCATION (NODE))) (in_system_header_at (DECL_SOURCE_LOCATION (NODE)))
/* Used to indicate that the linkage status of this DECL is not yet known,
so it should not be output now. */
#define DECL_DEFER_OUTPUT(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
/* In a VAR_DECL that's static,
nonzero if the space is in the text section. */
#define DECL_IN_TEXT_SECTION(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
/* Nonzero for a given ..._DECL node means that this node should be
put in .common, if possible. If a DECL_INITIAL is given, and it
is not error_mark_node, then the decl cannot be put in .common. */
#define DECL_COMMON(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
/* In a VAR_DECL, nonzero if the decl is a register variable with
an explicit asm specification. */
#define DECL_HARD_REGISTER(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
/* Used to indicate that this DECL has weak linkage. */ /* Used to indicate that this DECL has weak linkage. */
#define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag) #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag)
/* Used to indicate that the DECL is a dllimport. */ /* Used to indicate that the DECL is a dllimport. */
#define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) #define DECL_DLLIMPORT_P(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag)
/* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need /* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need
not be put out unless it is needed in this translation unit. not be put out unless it is needed in this translation unit.
...@@ -2940,9 +2990,15 @@ struct GTY(()) tree_parm_decl { ...@@ -2940,9 +2990,15 @@ struct GTY(()) tree_parm_decl {
back-end; it is up to front-ends which set this flag to ensure back-end; it is up to front-ends which set this flag to ensure
that there will never be any harm, other than bloat, in putting out that there will never be any harm, other than bloat, in putting out
something which is DECL_COMDAT. */ something which is DECL_COMDAT. */
#define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag) #define DECL_COMDAT(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag)
#define DECL_COMDAT_GROUP(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group) #define DECL_COMDAT_GROUP(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group)
/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in
multiple translation units should be merged. */
#define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE)
/* A replaceable function is one which may be replaced at link-time /* A replaceable function is one which may be replaced at link-time
with an entirely different definition, provided that the with an entirely different definition, provided that the
...@@ -2978,7 +3034,8 @@ struct GTY(()) tree_parm_decl { ...@@ -2978,7 +3034,8 @@ struct GTY(()) tree_parm_decl {
the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set
yet. */ yet. */
#define DECL_ASSEMBLER_NAME_SET_P(NODE) \ #define DECL_ASSEMBLER_NAME_SET_P(NODE) \
(HAS_DECL_ASSEMBLER_NAME_P (NODE) && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) (HAS_DECL_ASSEMBLER_NAME_P (NODE) \
&& DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE)
/* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */ /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */
#define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \ #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \
...@@ -3001,18 +3058,37 @@ struct GTY(()) tree_parm_decl { ...@@ -3001,18 +3058,37 @@ struct GTY(()) tree_parm_decl {
/* Records the section name in a section attribute. Used to pass /* Records the section name in a section attribute. Used to pass
the name from decl_attributes to make_function_rtl and make_decl_rtl. */ the name from decl_attributes to make_function_rtl and make_decl_rtl. */
#define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name) #define DECL_SECTION_NAME(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name)
/* Nonzero in a decl means that the gimplifier has seen (or placed)
this variable in a BIND_EXPR. */
#define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
/* Value of the decls's visibility attribute */ /* Value of the decls's visibility attribute */
#define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility) #define DECL_VISIBILITY(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility)
/* Nonzero means that the decl had its visibility specified rather than /* Nonzero means that the decl had its visibility specified rather than
being inferred. */ being inferred. */
#define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified) #define DECL_VISIBILITY_SPECIFIED(NODE) \
(DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified)
/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in /* In a VAR_DECL, the model to use if the data should be allocated from
multiple translation units should be merged. */ thread-local storage. */
#define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE) #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
/* In a VAR_DECL, nonzero if the data should be allocated from
thread-local storage. */
#define DECL_THREAD_LOCAL_P(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
/* In a non-local VAR_DECL with static storage duration, true if the
variable has an initialization priority. If false, the variable
will be initialized at the DEFAULT_INIT_PRIORITY. */
#define DECL_HAS_INIT_PRIORITY_P(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
struct GTY(()) tree_decl_with_vis { struct GTY(()) tree_decl_with_vis {
struct tree_decl_with_rtl common; struct tree_decl_with_rtl common;
...@@ -3044,19 +3120,6 @@ struct GTY(()) tree_decl_with_vis { ...@@ -3044,19 +3120,6 @@ struct GTY(()) tree_decl_with_vis {
/* 15 unused bits. */ /* 15 unused bits. */
}; };
/* In a VAR_DECL that's static,
nonzero if the space is in the text section. */
#define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
/* Nonzero for a given ..._DECL node means that this node should be
put in .common, if possible. If a DECL_INITIAL is given, and it
is not error_mark_node, then the decl cannot be put in .common. */
#define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
/* In a VAR_DECL, nonzero if the decl is a register variable with
an explicit asm specification. */
#define DECL_HARD_REGISTER(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
extern tree decl_debug_expr_lookup (tree); extern tree decl_debug_expr_lookup (tree);
extern void decl_debug_expr_insert (tree, tree); extern void decl_debug_expr_insert (tree, tree);
/* For VAR_DECL, this is set to either an expression that it was split /* For VAR_DECL, this is set to either an expression that it was split
...@@ -3076,12 +3139,6 @@ extern priority_type decl_fini_priority_lookup (tree); ...@@ -3076,12 +3139,6 @@ extern priority_type decl_fini_priority_lookup (tree);
extern void decl_init_priority_insert (tree, priority_type); extern void decl_init_priority_insert (tree, priority_type);
extern void decl_fini_priority_insert (tree, priority_type); extern void decl_fini_priority_insert (tree, priority_type);
/* In a non-local VAR_DECL with static storage duration, true if the
variable has an initialization priority. If false, the variable
will be initialized at the DEFAULT_INIT_PRIORITY. */
#define DECL_HAS_INIT_PRIORITY_P(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
/* For a VAR_DECL or FUNCTION_DECL the initialization priority of /* For a VAR_DECL or FUNCTION_DECL the initialization priority of
NODE. */ NODE. */
#define DECL_INIT_PRIORITY(NODE) \ #define DECL_INIT_PRIORITY(NODE) \
...@@ -3108,15 +3165,6 @@ extern void decl_fini_priority_insert (tree, priority_type); ...@@ -3108,15 +3165,6 @@ extern void decl_fini_priority_insert (tree, priority_type);
libraries. */ libraries. */
#define MAX_RESERVED_INIT_PRIORITY 100 #define MAX_RESERVED_INIT_PRIORITY 100
/* In a VAR_DECL, the model to use if the data should be allocated from
thread-local storage. */
#define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
/* In a VAR_DECL, nonzero if the data should be allocated from
thread-local storage. */
#define DECL_THREAD_LOCAL_P(NODE) \
(VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
#define DECL_VAR_ANN_PTR(NODE) \ #define DECL_VAR_ANN_PTR(NODE) \
(TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \ (TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \
: TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \ : TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \
...@@ -3131,7 +3179,8 @@ struct GTY(()) tree_var_decl { ...@@ -3131,7 +3179,8 @@ struct GTY(()) tree_var_decl {
/* This field is used to reference anything in decl.result and is meant only /* This field is used to reference anything in decl.result and is meant only
for use by the garbage collector. */ for use by the garbage collector. */
#define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result) #define DECL_RESULT_FLD(NODE) \
(DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result)
/* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways. /* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways.
Before the struct containing the FUNCTION_DECL is laid out, Before the struct containing the FUNCTION_DECL is laid out,
...@@ -3141,7 +3190,8 @@ struct GTY(()) tree_var_decl { ...@@ -3141,7 +3190,8 @@ struct GTY(()) tree_var_decl {
to an INTEGER_CST node which is suitable for use as an index to an INTEGER_CST node which is suitable for use as an index
into the virtual function table. into the virtual function table.
C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK. */ C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK. */
#define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex) #define DECL_VINDEX(NODE) \
(DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex)
struct GTY(()) struct GTY(())
tree_decl_non_common { tree_decl_non_common {
...@@ -3160,16 +3210,19 @@ struct GTY(()) ...@@ -3160,16 +3210,19 @@ struct GTY(())
#define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result) #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result)
/* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */
#define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable) #define DECL_UNINLINABLE(NODE) \
(FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable)
/* In a FUNCTION_DECL, the saved representation of the body of the /* In a FUNCTION_DECL, the saved representation of the body of the
entire function. */ entire function. */
#define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree) #define DECL_SAVED_TREE(NODE) \
(FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree)
/* Nonzero in a FUNCTION_DECL means this function should be treated /* Nonzero in a FUNCTION_DECL means this function should be treated
as if it were a malloc, meaning it returns a pointer that is as if it were a malloc, meaning it returns a pointer that is
not an alias. */ not an alias. */
#define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag) #define DECL_IS_MALLOC(NODE) \
(FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag)
/* Nonzero in a FUNCTION_DECL means this function should be treated as /* Nonzero in a FUNCTION_DECL means this function should be treated as
C++ operator new, meaning that it returns a pointer for which we C++ operator new, meaning that it returns a pointer for which we
...@@ -3198,7 +3251,8 @@ struct GTY(()) ...@@ -3198,7 +3251,8 @@ struct GTY(())
/* Nonzero in a FUNCTION_DECL means this function should be treated /* Nonzero in a FUNCTION_DECL means this function should be treated
as "novops" function (function that does not read global memory, as "novops" function (function that does not read global memory,
but may have arbitrary side effects). */ but may have arbitrary side effects). */
#define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag) #define DECL_IS_NOVOPS(NODE) \
(FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag)
/* Used in FUNCTION_DECLs to indicate that they should be run automatically /* Used in FUNCTION_DECLs to indicate that they should be run automatically
at the beginning or end of execution. */ at the beginning or end of execution. */
...@@ -3248,7 +3302,8 @@ struct GTY(()) ...@@ -3248,7 +3302,8 @@ struct GTY(())
/* For FUNCTION_DECL, this holds a pointer to a structure ("struct function") /* For FUNCTION_DECL, this holds a pointer to a structure ("struct function")
that describes the status of this function. */ that describes the status of this function. */
#define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f) #define DECL_STRUCT_FUNCTION(NODE) \
(FUNCTION_DECL_CHECK (NODE)->function_decl.f)
/* In a FUNCTION_DECL, nonzero means a built in function. */ /* In a FUNCTION_DECL, nonzero means a built in function. */
#define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN) #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
...@@ -3260,8 +3315,10 @@ struct GTY(()) ...@@ -3260,8 +3315,10 @@ struct GTY(())
/* In FUNCTION_DECL, a chain of ..._DECL nodes. /* In FUNCTION_DECL, a chain of ..._DECL nodes.
VAR_DECL and PARM_DECL reserve the arguments slot for language-specific VAR_DECL and PARM_DECL reserve the arguments slot for language-specific
uses. */ uses. */
#define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments) #define DECL_ARGUMENTS(NODE) \
#define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments)
#define DECL_ARGUMENT_FLD(NODE) \
(DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments)
/* In FUNCTION_DECL, the function specific target options to use when compiling /* In FUNCTION_DECL, the function specific target options to use when compiling
this function. */ this function. */
...@@ -3321,7 +3378,8 @@ struct GTY(()) tree_function_decl { ...@@ -3321,7 +3378,8 @@ struct GTY(()) tree_function_decl {
}; };
/* For a TYPE_DECL, holds the "original" type. (TREE_TYPE has the copy.) */ /* For a TYPE_DECL, holds the "original" type. (TREE_TYPE has the copy.) */
#define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result) #define DECL_ORIGINAL_TYPE(NODE) \
(TYPE_DECL_CHECK (NODE)->decl_non_common.result)
/* In a TYPE_DECL nonzero means the detail info about this type is not dumped /* In a TYPE_DECL nonzero means the detail info about this type is not dumped
into stabs. Instead it will generate cross reference ('x') of names. into stabs. Instead it will generate cross reference ('x') of names.
...@@ -3755,7 +3813,8 @@ extern GTY(()) tree global_trees[TI_MAX]; ...@@ -3755,7 +3813,8 @@ extern GTY(()) tree global_trees[TI_MAX];
#define void_list_node global_trees[TI_VOID_LIST_NODE] #define void_list_node global_trees[TI_VOID_LIST_NODE]
#define main_identifier_node global_trees[TI_MAIN_IDENTIFIER] #define main_identifier_node global_trees[TI_MAIN_IDENTIFIER]
#define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node) #define MAIN_NAME_P(NODE) \
(IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
/* Optimization options (OPTIMIZATION_NODE) to use for default and current /* Optimization options (OPTIMIZATION_NODE) to use for default and current
functions. */ functions. */
...@@ -5125,6 +5184,7 @@ extern void internal_reference_types (void); ...@@ -5125,6 +5184,7 @@ extern void internal_reference_types (void);
extern unsigned int update_alignment_for_field (record_layout_info, tree, extern unsigned int update_alignment_for_field (record_layout_info, tree,
unsigned int); unsigned int);
/* varasm.c */ /* varasm.c */
extern tree tree_output_constant_def (tree);
extern void make_decl_rtl (tree); extern void make_decl_rtl (tree);
extern rtx make_decl_rtl_for_debug (tree); extern rtx make_decl_rtl_for_debug (tree);
extern void make_decl_one_only (tree, tree); extern void make_decl_one_only (tree, tree);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment