diff options
author | Gary Dismukes <dismukes@adacore.com> | 2007-06-06 12:16:54 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-06-06 12:16:54 +0200 |
commit | 09ef48fe18e9314a3b9a42692864644c01e5b50d (patch) | |
tree | ef59df58fad7bd905b3d7ef9766f7c88ea579fdf /gcc/ada/ada-tree.h | |
parent | fce2526fe8eb39b0f069e23edc125d3e5faaf6d9 (diff) | |
download | gcc-09ef48fe18e9314a3b9a42692864644c01e5b50d.zip gcc-09ef48fe18e9314a3b9a42692864644c01e5b50d.tar.gz gcc-09ef48fe18e9314a3b9a42692864644c01e5b50d.tar.bz2 |
gigi.h, trans.c (Identifier_to_gnu): Change test for deferred constant by adding guard that the entity is an...
2007-04-20 Gary Dismukes <dismukes@adacore.com>
Eric Botcazou <ebotcazou@adacore.com>
Tristan Gingold <gingold@adacore.com>
Olivier Hainque <hainque@adacore.com>
* gigi.h, trans.c (Identifier_to_gnu): Change test for deferred
constant by adding guard that the entity is an E_Constant before
testing presence of Full_view (and remove now-unnecessary test that
entity is not a type).
For a CONST_DECL used by reference, manually retrieve
the DECL_INITIAL. Do not invoke fold in the other DECL_P cases either.
(struct language_function): Move from utils.c to here.
(struct parm_attr): New structure.
(parm_attr, parm_attr vector, parm_attr GC vector): New types.
(f_parm_attr_cache): New macro.
(Attribute_to_gnu) <Attr_Length>: When not optimizing, cache the
expressions for the 'First, 'Last and 'Length attributes of the
unconstrained array IN parameters.
(Subprogram_Body_to_gnu): Use gnu_subprog_decl throughout.
Allocate the information structure for the function earlier, as well
as the language-specific part.
If the parameter attributes cache has been populated, evaluate the
cached expressions on entry.
(takes_address): Add OPERAND_TYPE parameter. Handle N_Function_Call,
N_Procedure_Call_Statement and N_Indexed_Component.
(Pragma_to_gnu): Translate inspection_point to an asm statement
containaing a comment and a reference to the object (either its address
for BLKmode or its value).
(Identifier_to_gnu): Use TREE_CONSTANT instead of CONST_DECL to decide
to go to DECL_INITIAL. Together with the size constraint relaxation
in create_var_decl, enlarges the set of situations in which an
identifier may be used as an initializer without implying elaboration
code.
(Subprogram_Body_to_gnu): Do not fiddle with the debug interface but set
DECL_IGNORED_P on the function if Needs_Debug_Info is not set on the
node.
(maybe_stabilize_reference): Remove lvalues_only parameter.
(gnat_stabilize_reference): Adjust for above change.
(gnat_to_gnu): Do not set location information on the result
if it is a reference.
(add_cleanup): Add gnat_node parameter and set the location of the
cleanup to it.
(Handled_Sequence_Of_Statements_to_gnu): Adjust calls to add_cleanup.
(Exception_Handler_to_gnu_zcx): Likewise.
(gigi): Remove the cgraph node if the elaboration procedure is empty.
(Subprogram_Body_to_gnu): If a stub is attached to the subprogram, emit
the former right after the latter.
(start_stmt_group): Make global.
(end_stmt_group): Likewise.
(gnu_constraint_error_label_stack, gnu_storage_error_label_stack): New
vars.
(gnu_program_error_label_stack): Likewise.
(gigi): Initialize them.
(call_to_gnu, gnat_to_gnu, emit_check): Add new arg to build_call_raise.
(gnat_to_gnu, N_{Push,Pop}_{Constraint,Storage,Program}_Error_Label):
New cases.
(push_exception_label_stack): New function.
(takes_address): New function.
* utils.c (struct language_function): Move to trans.c from here.
(unchecked_convert): Do not wrap up integer constants in
VIEW_CONVERT_EXPRs.
(create_var_decl_1): Decouple TREE_CONSTANT from CONST_DECL. Prevent
the latter for aggregate types, unexpected by later passes, and relax an
arbitrary size constraint on the former.
(create_field_decl): Use tree_int_cst_equal instead of operand_equal_p
to compare the sizes.
(convert_vms_descriptor): When converting to a fat pointer type, be
prepared for a S descriptor at runtime in spite of a SB specification.
(shift_unc_components_for_thin_pointers): New function.
(write_record_type_debug_info): For variable-sized fields, cap the
alignment of the pointer to the computed alignment.
(finish_record_type): Change HAS_REP parameter into REP_LEVEL.
If REP_LEVEL is 2, do not compute the sizes.
(build_vms_descriptor): Adjust for new prototype of finish_record_type.
(build_unc_object_type): Likewise.
(declare_debug_type): New function.
* ada-tree.def: USE_STMT: removed (not emitted anymore).
* misc.c (gnat_expand_expr): Call to gnat_expand_stmt removed because
no statement is expandable anymore.
(gnat_init_gcc_eh): Do not initialize the DWARF-2 CFI machinery twice.
(gnat_handle_option): Only allow flag_eliminate_debug_types to be set
when the user requested it explicitely.
(gnat_post_options): By default, set flag_eliminate_unused_debug_types
to 0 for Ada.
(get_alias_set): Return alias set 0 for a type if
TYPE_UNIVERSAL_ALIASING_P is set on its main variant.
* ada-tree.h: (TYPE_UNIVERSAL_ALIASING_P): New macro.
(DECL_FUNCTION_STUB): New accessor macro.
(SET_DECL_FUNCTION_STUB): New setter macro.
* lang.opt (feliminate-unused-debug-types): Intercept this flag for Ada.
* fe.h (Get_Local_Raise_Call_Entity, Get_RT_Exception_Entity): New
declarations.
From-SVN: r125371
Diffstat (limited to 'gcc/ada/ada-tree.h')
-rw-r--r-- | gcc/ada/ada-tree.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ada/ada-tree.h b/gcc/ada/ada-tree.h index e333d0f..fb4f748 100644 --- a/gcc/ada/ada-tree.h +++ b/gcc/ada/ada-tree.h @@ -6,7 +6,7 @@ * * * C Header File * * * - * Copyright (C) 1992-2006 Free Software Foundation, Inc. * + * Copyright (C) 1992-2007, Free Software Foundation, Inc. * * * * GNAT is free software; you can redistribute it and/or modify it under * * terms of the GNU General Public License as published by the Free Soft- * @@ -161,6 +161,9 @@ struct lang_type GTY(()) {tree t; }; padding or alignment. */ #define TYPE_IS_PADDING_P(NODE) TYPE_LANG_FLAG_5 (RECORD_TYPE_CHECK (NODE)) +/* True if TYPE can alias any other types. */ +#define TYPE_UNIVERSAL_ALIASING_P(NODE) TYPE_LANG_FLAG_6 (NODE) + /* This field is only defined for FUNCTION_TYPE nodes. If the Ada subprogram contains no parameters passed by copy in/copy out then this field is 0. Otherwise it points to a list of nodes used to specify the @@ -288,6 +291,13 @@ struct lang_type GTY(()) {tree t; }; #define SET_DECL_RENAMED_OBJECT(NODE, X) \ SET_DECL_LANG_SPECIFIC (VAR_DECL_CHECK (NODE), X) +/* In a FUNCTION_DECL, points to the stub associated with the function + if any, otherwise 0. */ +#define DECL_FUNCTION_STUB(NODE) \ + GET_DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (NODE)) +#define SET_DECL_FUNCTION_STUB(NODE, X) \ + SET_DECL_LANG_SPECIFIC (FUNCTION_DECL_CHECK (NODE), X) + /* In a FIELD_DECL corresponding to a discriminant, contains the discriminant number. */ #define DECL_DISCRIMINANT_NUMBER(NODE) DECL_INITIAL (FIELD_DECL_CHECK (NODE)) |