gigi.h, trans.c (Identifier_to_gnu): Change test for deferred constant by adding…
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
Showing
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment