summaryrefslogtreecommitdiffstats
path: root/gcc/ada/gcc-interface/gigi.h
Commit message (Collapse)AuthorAgeFilesLines
...
* * gcc-interface/gigi.h (add_stmt_force): Declare.ebotcazou2010-11-031-2/+9
| | | | | | | | | | | | | (add_stmt_with_node_force): Likewise. * gcc-interface/trans.c (Attribute_to_gnu): Don't set TREE_SIDE_EFFECTS on the SAVE_EXPR built for cached expressions of parameter attributes. (Subprogram_Body_to_gnu): Force evaluation of the SAVE_EXPR built for cached expressions of parameter attributes. (add_stmt_force): New function. (add_stmt_with_node_force): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166222 138bc75d-0d04-0410-961f-82ee72b054a4
* 2010-10-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>charlet2010-10-261-0/+5
| | | | | | | | | | | * gcc-interface/utils2.c (build_compound_expr): New function. * gcc-interface/gigi.h (build_compound_expr): Declare it. * gcc-interface/trans.c (Attribute_to_gnu, call_to_gnu): Use it. (gnat_to_gnu, case N_Expression_With_Actions): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165958 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/utils.c, gcc-interface/gigi.h: Minor reformatting.charlet2010-10-221-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165806 138bc75d-0d04-0410-961f-82ee72b054a4
* 2010-10-19 Robert Dewar <dewar@adacore.com>charlet2010-10-191-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * sem_eval.adb: Minor reformatting. 2010-10-19 Tristan Gingold <gingold@adacore.com> * exp_ch4.adb (Expand_N_And_Op, Expand_N_Or_Op, Expand_N_Xor_Op): Call Expand_Intrinsic_Call if the function is intrinsic. * exp_intr_adb (Expand_Binary_Operator): Handle VMS case for logical binary operator on the unsigned_quadword record. * exp_intr.ads (Expand_Intrinsic_Call): Update comments. 2010-10-19 Geert Bosch <bosch@adacore.com> * gnat_rm.texi (pragma Float_Representation): Fix typo. 2010-10-19 Arnaud Charlet <charlet@adacore.com> * switch-c.adb (Scan_Front_End_Switches): Add handling of -gnateE. * fe.h (Exception_Extra_Info): Declare. * usage.adb (usage): Add -gnateE doc. * checks.adb (Install_Null_Excluding_Check): Use better sloc. * sem_util.adb (Insert_Explicit_Dereference): Ditto. * gnat_ugn.texi: Document -gnateE switch. * a-except.adb (Set_Exception_C_Msg): New parameter Column. * a-except-2005.adb (Set_Exception_C_Msg): New parameter Column. (Raise_Constraint_Error_Msg): Ditto. (Image): New helper function. (Rcheck_00_Ext, Rcheck_05_Ext, Rcheck_12_Ext): New procedure with more detailed exception information. Adjust calls to Set_Exception_C_Msg and Raise_Constraint_Error_Msg. * a-exexda.adb (Set_Exception_C_Msg): New parameter Column. * opt.ads (Exception_Extra_Info): New flag. * gcc-interface/utils.c (gnat_raise_decls_ext): New. * gcc-interface/utils2.c (build_call_raise_range, build_call_raise_column): New functions. * gcc-interface/gigi.h (exception_info_kind, gnat_raise_decls_ext, build_call_raise_range, build_call_raise_column): Declare. gcc-interface/trans.c (build_raise_check): New function. (gigi): Initialize gnat_raise_decls_ext. (gnat_to_gnu): Add initial support for -gnateE switch. * gcc-interface/Make-lang.in: Update dependencies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165696 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/lang.opt (gdwarf+): Remove.ebotcazou2010-10-101-3/+0
| | | | | | | | | | | | | * gcc-interface/gigi.h (get_parallel_type): Likewise * gcc-interface/misc.c (gnat_dwarf_extensions): Likewise. (gnat_handle_option): Remove OPT_gdwarfplus case. (gnat_post_options): Remove setting of use_gnu_debug_info_extensions from gnat_dwarf_extensions. * gcc-interface/trans.c (gigi): Remove -gdwarf+ initializations. * gcc-interface/utils.c (get_parallel_type): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165254 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro.ebotcazou2010-10-101-2/+3
| | | | | | | | | | | | | | | | | | | * gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter. * gcc-interface/decl.c (annotate_object): Likewise and handle it. (gnat_to_gnu_entity): Adjust calls to annotate_object. (gnat_to_gnu_param): If fat pointer types are passed by reference on the target, pass them by explicit reference. * gcc-interface/misc.c (default_pass_by_ref): Fix type of constant. * gcc-interface/trans.c (Identifier_to_gnu): Do DECL_BY_DOUBLE_REF_P. (Subprogram_Body_to_gnu): Adjust call to annotate_object. (call_to_gnu): Handle DECL_BY_DOUBLE_REF_P. * gcc-interface/utils.c (convert_vms_descriptor): Add BY_REF parameter and handle it. (build_function_stub): Iterate on the parameters of the subprogram in lieu of on the argument types. Adjust call to convert_vms_descriptor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165250 138bc75d-0d04-0410-961f-82ee72b054a4
* * langhooks.h (struct lang_hooks_for_types): Remove hash_types field.ebotcazou2010-09-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * langhooks-def.h (LANG_HOOKS_HASH_TYPES): Delete. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_HASH_TYPES. * system.h (LANG_HOOKS_HASH_TYPES): Poison. * tree.c (type_hash_canon): Do not test lang_hooks.types.hash_types. (build_nonstandard_integer_type): Likewise. (build_range_type_1): New function, built from... (build_range_type): ...this. Call build_range_type_1. (build_nonshared_range_type): New function. (build_array_type_1): New function, built from... (build_array_type: ...this. Call build_array_type_1. (build_nonshared_array_type): New function. * tree.h (build_nonshared_range_type): Declare. (build_nonshared_array_type): Likewise. ada/ * gcc-interface/decl.c (gnat_to_gnu_entity): Replace calls to build_array_type with calls to build_nonshared_array_type. (substitute_in_type): Likewise. * gcc-interface/misc.c (LANG_HOOKS_HASH_TYPES): Delete. (LANG_HOOKS_TYPE_HASH_EQ): Define. (gnat_post_options): Add 'static' keyword. (gnat_type_hash_eq): New static function. * gcc-interface/utils.c (fntype_same_flags_p): New function. (create_subprog_type): Call it. (create_index_type): Call build_nonshared_range_type and tidy up. (create_range_type): Likewise. * gcc-interface/gigi.h (fntype_same_flags_p): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164452 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (get_elaboration_procedure): Declare.ebotcazou2010-09-191-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | (gnat_zaplevel): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not force global binding level for an external constant. <E_Constant>: Force the local context and create a fake scope before translating the defining expression of an external constant. <object>: Treat external constants at the global level explicitly for renaming declarations. (elaborate_expression_1): Force the variable to be static if the expression is global. * gcc-interface/trans.c (get_elaboration_procedure): New function. (call_to_gnu): Use it. (gnat_to_gnu): Likewise. <N_Object_Declaration>: Do not test Is_Public to force the creation of an initialization variable. (add_decl_expr): Discard the statement if the declaration is external. * gcc-interface/utils.c (gnat_pushdecl): Do not put the declaration in the current block if it is external. (create_var_decl_1): Do not test Is_Public to set TREE_STATIC. (gnat_zaplevel): New global function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164416 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (gnat_build_constructor): Take a VEC insteadfroydnj2010-06-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | of a TREE_LIST. Update comment. * gcc-interface/trans.c (gigi): Build a VEC instead of a TREE_LIST. Adjust call to gnat_build_constructor. (Attribute_to_gnu): Likewise. (gnat_to_gnu): Likewise. (pos_to_constructor): Likewise. (extract_values): Likewise. * gcc-interface/utils.c (build_template): Likewise. (convert_vms_descriptor64): Likewise. (convert_vms_descriptor32): Likewise. (convert_to_fat_pointer): Likewise. (convert): Likewise. (unchecked_convert): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity): Likewise. * gcc-interface/utils2.c (build_allocator): Likewise. (fill_vms_descriptor): Likewise. (gnat_build_constructor): Take a VEC instead of a TREE_LIST. (compare_elmt_bitpos): Adjust for parameters being constructor_elts instead of TREE_LISTs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161529 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/utils.c: Do not include function.h, pointer-set.h,steven2010-05-251-14/+0
| | | | | | | | | | | | | | | | | | | and gimple.h. Explain why rtl.h has to be included. (handle_vector_size_attribute): Call reconstruct_complex_type directly. * gcc-interface/targtyps.c: Do not include tm_p.h * gcc-interface/utils2.c: Do not include flags.h. * gcc-interface/trans.c: Do not include expr.h. Include rtl.h instead, and explain why it has to be included. * gcc-interface/misc.c: Do not include expr.h, libfuncs.h, cgraph.h, and optabs.h. Include function.h and explain why. Explain why except.h is included. (enumerate_modes): Remove unused function. * gcc-interface/gigi.h (enumerate_modes): Remove prototype. * gcc-interface/Make-lang.in: Update dependencies. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159844 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (enum standard_datatypes): Add new valueebotcazou2010-05-161-0/+4
| | | | | | | | | | | | | | ADT_exception_data_name_id. (exception_data_name_id): New define. * gcc-interface/trans.c (gigi): Initialize it. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use the standard exception type for standard exception definitions. Do not make them volatile. <E_Record_Type>: Equate fields of types associated with an exception definition to those of the standard exception type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159452 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (create_field_decl): Move PACKED parameter.ebotcazou2010-05-081-6/+6
| | | | | | | | | | | | | | | | | | | | | | * gcc-interface/utils.c (create_field_decl): Move PACKED parameter. (rest_of_record_type_compilation): Adjust call to create_field_decl. (make_descriptor_field): Likewise and pass correctly typed constants. (build_unc_object_type): Likewise. (unchecked_convert): Likewise. * gcc-interface/decl.c (elaborate_expression_2): New static function. (gnat_to_gnu_entity): Use it to make alignment factors explicit. Adjust call to create_field_decl. (make_aligning_type): Likewise. (make_packable_type): Likewise. (maybe_pad_type): Likewise. (gnat_to_gnu_field): Likewise. (components_to_record): Likewise. (create_field_decl_from): Likewise. (create_variant_part_from): Remove superfluous test. * gcc-interface/trans.c (gigi): Adjust call to create_field_decl. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159181 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (build_unc_object_type): Add DEBUG_INFO_P param.ebotcazou2010-05-081-8/+9
| | | | | | | | | | | | | | | (build_unc_object_type_from_ptr): Likewise. * gcc-interface/utils.c (build_unc_object_type): Add DEBUG_INFO_P param and pass it to create_type_decl. Declare the type. Simplify. (build_unc_object_type_from_ptr): Add DEBUG_INFO_P parameter and pass it to build_unc_object_type. * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust to above change. * gcc-interface/trans.c (Attribute_to_gnu): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils2.c (build_allocator): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159180 138bc75d-0d04-0410-961f-82ee72b054a4
* * back-end.adb (Call_Back_End): Pass Standard_Character to gigi.ebotcazou2010-04-171-39/+1
| | | | | | | | | | | | | | | | | | | | * gcc-interface/gigi.h (gigi): Add standard_character parameter. (CHAR_TYPE_SIZE, SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE, FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE, LONG_DOUBLE_TYPE_SIZE, SIZE_TYPE): Delete. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Call rm_size. * gcc-interface/misc.c (gnat_init): Set signedness of char as per flag_signed_char. Tag sizetype with "size_type" moniker. * gcc-interface/trans.c (gigi): Add standard_character parameter. Remove useless built-in types. Equate unsigned_char_type_node to Standard.Character. Use it instead of char_type_node throughout. (Attribute_to_gnu): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils2.c (build_call_raise): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158462 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (enum standard_datatypes): Add new valuesebotcazou2010-04-171-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | ADT_sbitsize_one_node and ADT_sbitsize_unit_node. (sbitsize_one_node): New macro. (sbitsize_unit_node): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Fix latent bug in the computation of subrange_p. Fold wider_p predicate. (cannot_be_superflat_p): Use an explicitly signed 64-bit type to do the final comparison. (make_aligning_type): Build real negation and use sizetype throughout the offset computation. (maybe_pad_type): Do not issue the warning when the new size expression is too complex. (annotate_value) <INTEGER_CST>: Simplify code handling negative values. * gcc-interface/misc.c (gnat_init): Initialize sbitsize_one_node and sbitsize_unit_node. * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Pool_Address>: Fold double negation. (gnat_to_gnu) <N_Free_Statement>: Likewise. * gcc-interface/utils.c (convert): Use sbitsize_unit_node. * gcc-interface/utils2.c (compare_arrays): Compute real lengths and use constants in sizetype. Remove dead code and tweak comments. Generate equality instead of inequality comparisons for zero length tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158461 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (gnat_init_decl_processing): Delete.ebotcazou2010-04-161-1/+0
| | | | | | | | | | | | | | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_entity): Constify a few variables. <object>: Do not create the fake PARM_DECL if no debug info is needed. Do not create the corresponding VAR_DECL of a CONST_DECL for debugging purposes if no debug info is needed. Fix formatting. Reorder and add comments. * gcc-interface/trans.c (gnat_to_gnu) <N_Attribute_Reference>: Constify variable and remove obsolete comment. * gcc-interface/utils.c (convert_vms_descriptor64): Tweak comment. (convert_vms_descriptor32): Likewise. (convert): Remove dead code. <UNCONSTRAINED_ARRAY_REF>: Pass the field instead of its name to build the reference to the P_ARRAY pointer. <POINTER_TYPE>: Likewise. (maybe_unconstrained_array) <UNCONSTRAINED_ARRAY_TYPE>: Likewise. (gnat_init_decl_processing): Delete, move contents to... * gcc-interface/misc.c (gnat_init): ...here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158428 138bc75d-0d04-0410-961f-82ee72b054a4
* * uintp.adb (UI_From_Dint): Remove useless code.ebotcazou2010-04-161-12/+9
| | | | | | | | | | | | | | | | | | | | | | | | (UI_From_Int): Likewise. * uintp.h: Reorder declarations. (UI_From_gnu): Declare. (UI_Base): Likewise. (Vector_Template): Likewise. (Vector_To_Uint): Likewise. (Uint_0): Remove. (Uint_1): Likewise. * gcc-interface/gigi.h: Tweak comments. * gcc-interface/cuintp.c (UI_From_gnu): New global function. * gcc-interface/decl.c (maybe_pad_type): Do not warn if either size overflows. (annotate_value) <INTEGER_CST>: Call UI_From_gnu. * gcc-interface/trans.c (post_error_ne_num): Call post_error_ne. (post_error_ne_tree): Call UI_From_gnu and post_error_ne. * gcc-interface/utils.c (max_size) <tcc_binary>: Do not special-case TYPE_MAX_VALUE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158408 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/cuintp.c (UI_To_gnu): Fix long line.ebotcazou2010-04-151-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/gigi.h (MARK_VISITED): Skip objects of constant class. (process_attributes): Delete. (post_error_ne_num): Change parameter name. * gcc-interface/decl.c (gnat_to_gnu_entity): Do not force debug info with -g3. Remove a couple of obsolete lines. Minor tweaks. If type annotating mode, operate on trees to compute the adjustment to the sizes of tagged types. Fix long line. (cannot_be_superflat_p): Tweak head comment. (annotate_value): Fold local constant. (set_rm_size): Fix long line. * gcc-interface/trans.c (Identifier_to_gnu): Rework comments. (Attribute_to_gnu): Fix long line. <Attr_Size>: Remove useless assertion. Reorder statements. Use size_binop routine. (Loop_Statement_to_gnu): Use build5 in lieu of build_nt. Create local variables for the label and the test. Tweak comments. (Subprogram_Body_to_gnu): Reset cfun to NULL. (Compilation_Unit_to_gnu): Use the Sloc of the Unit node. (process_inlined_subprograms): Integrate into... (Compilation_Unit_to_gnu): ...this. (gnat_to_gnu): Fix long line. (post_error_ne_num): Change parameter name. * gcc-interface/utils.c (process_attributes): Static-ify. <ATTR_MACHINE_ATTRIBUTE>: Set input_location before proceeding. (create_type_decl): Add comment. (create_var_decl_1): Process the attributes after adding the VAR_DECL to the current binding level. (create_subprog_decl): Likewise for the FUNCTION_DECL. (end_subprog_body): Do not reset cfun to NULL. (build_vms_descriptor32): Fix long line. (build_vms_descriptor): Likewise. (handle_nonnull_attribute): Likewise. (convert_vms_descriptor64): Likewise. * gcc-interface/utils2.c (fill_vms_descriptor): Fix long line. (gnat_protect_expr): Fix thinko. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158390 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h: Reorder declarations and tweak comments.ebotcazou2010-04-141-16/+13
| | | | | | | | | | | | | | | (gigi): Adjust ATTRIBUTE_UNUSED markers. * gcc-interface/gadaint.h: New file. * gcc-interface/trans.c: Include it in lieu of adaint.h. Reorder. (__gnat_to_canonical_file_spec): Remove declaration. (number_names): Delete. (number_files): Likewise. (gigi): Adjust. * gcc-interface/Make-lang.in (ada/trans.o): Adjust dependencies to above change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158296 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.ebotcazou2010-04-131-1/+5
| | | | | | | | | | | | | (parent_name_id): New macro. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Use it. * gcc-interface/trans.c (gigi): Initialize it. (lvalue_required_p) <N_Type_Conversion>: New case. <N_Qualified_Expression>: Likewise. <N_Allocator>: Likewise. * gcc-interface/utils.c (convert): Try to properly upcast tagged types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158255 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (maybe_variable): Delete.ebotcazou2010-04-091-12/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (protect_multiple_eval): Likewise. (maybe_stabilize_reference): Likewise. (gnat_save_expr): Declare. (gnat_protect_expr): Likewise. (gnat_stabilize_reference): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use gnat_stabilize_reference. (maybe_variable): Delete. (elaborate_expression_1): Use gnat_save_expr. * gcc-interface/trans.c (Attribute_to_gnu): Use gnat_protect_expr. (call_to_gnu): Pass NULL to gnat_stabilize_reference. (gnat_to_gnu) <N_Object_Declaration>: Use gnat_save_expr. <N_Slice>: Use gnat_protect_exp. <N_Selected_Component>: Pass NULL to gnat_stabilize_reference. <N_In>: Use gnat_protect_expr. Pass NULL to gnat_stabilize_reference. (build_unary_op_trapv): Use gnat_protect_expr. (build_binary_op_trapv): Likewise. (emit_range_check): Likewise. (emit_index_check): Likewise. (convert_with_check): Likewise. (protect_multiple_eval): Move to utils2.c file. (maybe_stabilize_reference): Merge into... (gnat_stabilize_reference): ...this. Move to utils2.c file. (gnat_stabilize_reference_1): Likewise. * gcc-interface/utils.c (convert_to_fat_pointer): Use gnat_protect_expr instead of protect_multiple_eval. * gcc-interface/utils2.c (compare_arrays): Likewise. (nonbinary_modular_operation): Likewise. (maybe_wrap_malloc): Likewise. (build_allocator): Likewise. (gnat_save_expr): New function. (gnat_protect_expr): Rename from protect_multiple_eval. Early return in common cases. Propagate TREE_READONLY onto dereferences. (gnat_stabilize_reference_1): Move from trans.c file. (gnat_stabilize_reference): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158159 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.ebotcazou2010-04-091-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/decl.c (maybe_variable): Do not set TREE_STATIC on _REF node. Use the type of the operand to set TREE_READONLY. * gcc-interface/trans.c (Identifier_to_gnu): Do not set TREE_STATIC on _REF node. Do not overwrite TREE_READONLY. (call_to_gnu): Rename local variable and fix various nits. In the copy-in/copy-out case, build the SAVE_EXPR manually. (convert_with_check): Call protect_multiple_eval in lieu of save_expr and fold the computations. (protect_multiple_eval): Always save entire fat pointers. (maybe_stabilize_reference): Minor tweaks. (gnat_stabilize_reference_1): Likewise. Do not deal with tcc_constant, tcc_type and tcc_statement. * gcc-interface/utils.c (convert_to_fat_pointer): Call protect_multiple_eval in lieu of save_expr. (convert): Minor tweaks. (maybe_unconstrained_array): Do not set TREE_STATIC on _REF node. (builtin_type_for_size): Call gnat_type_for_size directly. * gcc-interface/utils2.c (contains_save_expr_p): Delete. (contains_null_expr): Likewise (gnat_build_constructor): Do not call it. (compare_arrays): Deal with all side-effects, use protect_multiple_eval instead of gnat_stabilize_reference to protect the operands. (nonbinary_modular_operation): Call protect_multiple_eval in lieu of save_expr. (maybe_wrap_malloc): Likewise. (build_allocator): Likewise. (build_unary_op) <INDIRECT_REF>: Do not set TREE_STATIC on _REF node. (gnat_mark_addressable): Rename parameter. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158156 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree.h (TREE_ADDRESSABLE): Document its effect for function types.ebotcazou2010-04-081-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * calls.c (expand_call): Pass the function type to aggregate_value_p. * function.c (aggregate_value_p): Do not honor DECL_BY_REFERENCE on the target function of a CALL_EXPR. Honor TREE_ADDRESSABLE on the function type instead. Reorder and simplify checks. * gimplify.c (gimplify_modify_expr_rhs) <WITH_SIZE_EXPR>: New case. ada/ * gcc-interface/ada-tree.h (TYPE_RETURNS_UNCONSTRAINED_P): Rename into. (TYPE_RETURN_UNCONSTRAINED_P): ...this. (TYPE_RETURNS_BY_REF_P): Rename into. (TYPE_RETURN_BY_DIRECT_REF_P): ...this. (TYPE_RETURNS_BY_TARGET_PTR_P): Delete. * gcc-interface/gigi.h (create_subprog_type): Adjust parameter names. (build_return_expr): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Rename local variables. If the return Mechanism is By_Reference, pass return_by_invisible_ref_p to create_subprog_type instead of toggling TREE_ADDRESSABLE. Test return_by_invisible_ref_p in order to annotate the mechanism. Use regular return for contrained types with non-static size and return by invisible reference for unconstrained return types with default discriminants. Update comment. * gcc-interface/trans.c (Subprogram_Body_to_gnu): If the function returns by invisible reference, turn the RESULT_DECL into a pointer. Do not handle DECL_BY_REF_P in the CICO case here. (call_to_gnu): Remove code handling return by target pointer. For a function call, if the return type has non-constant size, generate the assignment with an INIT_EXPR. (gnat_to_gnu) <N_Return_Statement>: Remove dead code in the CICO case. If the function returns by invisible reference, build the copy return operation manually. (add_decl_expr): Initialize the variable with an INIT_EXPR. * gcc-interface/utils.c (create_subprog_type): Adjust parameter names. Adjust for renaming of macros. Copy the node only when necessary. (create_subprog_decl): Do not toggle TREE_ADDRESSABLE on the return type, only change DECL_BY_REFERENCE on the RETURN_DECL. (convert_from_reference): Delete. (is_byref_result): Likewise. (gnat_genericize_r): Likewise. (gnat_genericize): Likewise. (end_subprog_body): Do not call gnat_genericize. * gcc-interface/utils2.c (build_binary_op) <INIT_EXPR>: New case. (build_return_expr): Adjust parameter names, logic and comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158139 138bc75d-0d04-0410-961f-82ee72b054a4
* * sem_util.adb (Set_Debug_Info_Needed): For an E_Class_Wide_Subtype,ebotcazou2009-11-241-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | also set the flag on the Equivalent_Type. * gcc-interface/utils.c (finish_record_type): Replace DO_NOT_FINALIZE parameter with DEBUG_INFO_P. Rename FIELDLIST into FIELD_LIST. (rest_of_record_type_compilation): Rename FIELDLIST into FIELD_LIST. (build_vms_descriptor32): Adjust call to finish_record_type. (build_vms_descriptor): Likewise. (build_unc_object_type): Likewise. * decl.c (gnat_to_gnu_entity): Adjust calls to finish_record_type and components_to_record. (make_packable_type): Adjust call to finish_record_type. (maybe_pad_type): Likewise. Tweak condition. (components_to_record): Likewise. Replace DO_NOT_FINALIZE parameter with MAYBE_UNUSED. Adjust recursive call. (create_variant_part_from): Adjust call to finish_record_type. Do not call rest_of_record_type_compilation on the new record types. * trans.c (gigi): Adjust call to finish_record_type. * gigi.h (finish_record_type): Adjust prototype and comment. (rest_of_record_type_compilation): Adjust comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154515 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/utils.c (MAX_FIXED_MODE_SIZE): Delete.ebotcazou2009-10-301-6/+7
| | | | | | | | | (create_field_decl): Update description. In a packed record, round the size up to a byte boundary only if the field's type has BLKmode. * gcc-interface/gigi.h (create_field_decl): Update description. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@153755 138bc75d-0d04-0410-961f-82ee72b054a4
* * exp_dbug.ads: Adjust type names in comments.ebotcazou2009-10-161-13/+8
| | | | | | | | | | | | | | | * gcc-interface/decl.c (maybe_pad_type): Remove NAME_TRAILER parameter, add new IS_COMPONENT_TYPE parameter. Adjust. Remove dead code. (gnat_to_gnu_entity): Adjust for above change. (gnat_to_gnu_component_type): Likewise. (gnat_to_gnu_field): Likewise. * gcc-interface/trans.c (call_to_gnu): Likewise. Do not unnecessarily call max_size. * gcc-interface/utils.c (finish_record_type): Remove obsolete code. * gcc-interface/gigi.h (maybe_pad_type): Adjust prototype. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152916 138bc75d-0d04-0410-961f-82ee72b054a4
* ada/hainque2009-09-251-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/ada-tree.h (TYPE_REPRESENTATIVE_ARRAY): New language specific node. Representative array type for VECTOR_TYPE entities. * gcc-interface/utils.c (handle_vector_type_attribute): New handler. Turn an ARRAY_TYPE entity into a VECTOR_TYPE. (gnat_types_compatible_p): Handle VECTOR_TYPEs. (convert): Likewise. Arrange to produce VECTOR_CST out of constant array aggregates for VECTOR_TYPE entities. (unchecked_convert): Likewise. (maybe_vector_array): New function. If EXP has VECTOR_TYPE, return EXP converted to the associated TYPE_REPRESENTATIVE_ARRAY. (handle_pure_attribute, handle_sentinel_attribute, handle_noreturn_attribute, handle_malloc_attribute, handle_vector_size_attribute): Replace uses of qE format by qs. Remove GCC_DIAG_STYLE definition. * gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Convert vector input to representative array type on entry. <N_Op_Eq, etc>: Likewise. * gcc-interface/gigi.h (maybe_vector_array): Declare. (VECTOR_TYPE_P): New predicate. * gcc-interface/misc.c (gnat_print_type): Handle VECTOR_TYPE. testsuite/ * gnat.dg/sse_nolib.adb: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152165 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada.h: Fix outdated comment.ebotcazou2009-09-241-16/+11
| | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/ada-tree.h (SET_TYPE_RM_VALUE): Use MARK_VISITED in lieu of mark_visited. * gcc-interface/gigi.h (mark_visited): Change type of parameter. (MARK_VISITED): New macro. (gnat_truthvalue_conversion): Delete. * gcc-interface/decl.c (gnat_to_gnu_entity): Use MARK_VISITED in lieu of mark_visited. (annotate_rep): Fix formatting and tidy. (compute_field_positions): Get rid of useless variable. * gcc-interface/trans.c (gnat_to_gnu): Retrieve the Nkind of the GNAT node only once. Use IN operator for the Nkind in more cases. Remove calls to gnat_truthvalue_conversion. (mark_visited): Change type of parameter and adjust. (mark_visited_r): Dereference TP only once. (add_decl_expr): Use MARK_VISITED in lieu of mark_visited. * gcc-interface/utils2.c (gnat_truthvalue_conversion): Delete. (build_binary_op): Remove calls to gnat_truthvalue_conversion. (build_unary_op): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152121 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (end_subprog_body): Tweak comment.ebotcazou2009-08-021-2/+1
| | | | | | | | | * gcc-interface/utils.c (end_subprog_body): Likewise. * gcc-interface/trans.c (gigi): Likewise. (gnat_to_gnu): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150352 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-07-17 Richard Guenther <rguenther@suse.de>rguenth2009-07-171-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR c/40401 * tree-pass.h (pass_diagnose_omp_blocks): Declare. (pass_warn_unused_result): Likewise. (TODO_set_props): Remove. * omp-low.c (diagnose_omp_structured_block_errors): Change to run as a pass. (pass_diagnose_omp_blocks): Define. * c-decl.c (pop_file_scope): Do not finalize the CU here. (c_gimple_diagnostics_recursively): Remove. (finish_function): Do not call it. (c_write_global_declarations): Continue after errors. Finalize the CU here. * c-gimplify.c (c_genericize): Do not gimplify here. * c-common.c (c_warn_unused_result): Move ... * tree-cfg.c (do_warn_unused_result): ... here. (run_warn_unused_result): New function. (gate_warn_unused_result): New function. (pass_warn_unused_result): New pass. * c-common.h (c_warn_unused_result): Remove. * flags.h (flag_warn_unused_result): Declare. * c-opts.c (c_common_init_options): Enable flag_warn_unused_result. * opts.c (flag_warn_unused_result): Initialize to false. * toplev.c (compile_file): Add comment. * omp-low.c (create_omp_child_function): Do not register the function with the frontend. (diagnose_omp_structured_block_errors): Prepare to be called as optimization pass. (gate_diagnose_omp_blocks): New function. (pass_diagnose_omp_blocks): New pass. * cgraph.h (cgraph_optimize): Remove. (cgraph_analyze_function): Likewise. * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks. * cgraphunit.c (cgraph_lower_function): Lower nested functions before their parents here. (cgraph_finalize_function): Not here. (cgraph_analyze_function): Gimplify functions here. (cgraph_finalize_compilation_unit): Continue after errors. Optimize the callgraph from here. (cgraph_optimize): Make static. * langhooks.c (write_global_declarations): Finalize the CU. * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors. (gimplify_function_tree): Assert we gimplify only once. Set PROP_gimple_any property. * tree-nested.c (gimplify_all_functions): New function. (lower_nested_functions): Gimplify all nested functions. * gimple.h (diagnose_omp_structured_block_errors): Remove. * passes.c (init_optimization_passes): Add pass_warn_unused_result and pass_diagnose_omp_blocks after gimplification. Do not set TODO_set_props on all_lowering_passes. (execute_one_pass): Do not handle TODO_set_props. * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency. (gimplify.o): Add tree-pass.h dependency. * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST. (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR. (unsave_r): Likewise. * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the temporary variable. cp/ * decl.c (finish_function): Do not emit unused result warnings from here. * cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use c_warn_unused_result_pass. * semantics.c (expand_or_defer_fn): Adjust assertion about IL status. * optimize.c (clone_body): Clone in GENERIC. (maybe_clone_body): Do not clear DECL_SAVED_TREE. * decl2.c (cp_write_global_declarations): Fix body test. Do not call cgraph_optimize. * Make-lang.in (optimize.o): Add tree-iterator.h dependency. * method.c (use_thunk): Register thunk with cgraph_finalize_function. * error.c (function_category): Guard access of DECL_LANG_SPECIFIC. java/ * java-gimplify.c (java_genericize): Do not gimplify here. But replace all local references. (java_gimplify_expr): Do not replace local references here. (java_gimplify_modify_expr): Likewise. * jcf-parse.c (java_parse_file): Do not finalize the CU or optimize the cgraph here. * decl.c (java_replace_reference): Make static. (java_replace_references): New function. (end_java_method): Clear base_decl_map. * java-tree.h (java_replace_references): Declare. (java_replace_reference): Remove. ada/ * utils.c (end_subprog_body): Revert to pre-tuples state. Remove unused parameter. (gnat_gimplify_function): Do not gimplify here. Fold into its only caller and remove. (gnat_builtin_function): Adjust for end_subprog_body signature change. (gnat_write_global_declarations): Also finalize the CU. * misc.c (gnat_parse_file): Do not finalize the CU here. * trans.c (gigi): Revert to pre-tuples state. (Subprogram_Body_to_gnu): Adjust for end_subprog_body signature change. * gigi.h (end_subprog_body): Remove unused parameter. fortran/ * f95-lang.c (gfc_be_parse_file): Do not finalize the CU here. * trans-decl.c (gfc_gimplify_function): Remove. (build_entry_thunks): Do not gimplify here. (create_main_function): Likewise. (gfc_generate_function_code): Likewise. * g++.dg/rtti/crash4.C: New testcase. * g++.dg/torture/20090706-1.C: Likewise. * gcc.dg/redecl-17.c: Likewise. * gfortran.dg/missing_optional_dummy_5.f90: Adjust pattern. * gcc.dg/declspec-9.c: Expect extra error. * gcc.dg/declspec-10.c: Likewise. * gcc.dg/declspec-11.c: Likewise. * gcc.dg/redecl-10.c: Expect extra warnings. * gcc.target/i386/pr39082-1.c: Adjust diagnostic location. * gcc.target/i386/pr39545-1.c: Likewise. * g++.dg/ext/asm3.C: Expect more errors. * g++.dg/gomp/block-1.C: Likewise. * g++.dg/gomp/block-2.C: Likewise. * g++.dg/gomp/block-3.C: Likewise. * g++.dg/gomp/block-5.C: Likewise. * g++.old-deja/g++.jason/report.C: Expect extra warnings. * g++.dg/warn/unused-result1.C: XFAIL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149750 138bc75d-0d04-0410-961f-82ee72b054a4
* * checks.adb (Apply_Address_Clause_Check): Remove Size_Warning_Outputebotcazou2009-07-111-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | local variable and do not test it in Compile_Time_Bad_Alignment. Do not issue size or alignment warnings for the X'Address form. * sem_util.ads (Find_Overlaid_Object): Delete. (Find_Overlaid_Entity): New procedure. * sem_util.adb (Find_Overlaid_Object): Rename to... (Find_Overlaid_Entity): ...this and turn into a procedure. Report whether the address is offseted within the overlaid entity. (Has_Compatible_Alignment): Track the offset globally instead of passing it to Check_Offset. For an indexed component, compute the full offset when possible. If the resulting offset is zero, only check the prefix. (Check_Offset): Delete. * sem_ch13.adb (Address_Clause_Check_Record): Add Off field. (Address_Aliased_Entity): Delete. (Analyze_Attribute_Definition_Clause) <Attribute_Address>: Call Find_Overlaid_Entity to find the overlaid entity and the offset. Adjust throughout for above change. (Validate_Address_Clauses): Always use attributes of entities, not of their type. Tweak message for warning. Call Has_Compatible_Alignment if the address is offseted to warn about incompatible alignments. * gcc-interface/gigi.h (annotate_object): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Annotate renaming entity. Call annotate_object instead of annotating manually objects. (annotate_object): New function. * gcc-interface/trans.c (Subprogram_Body_to_gnu): Annotate parameters at the end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149520 138bc75d-0d04-0410-961f-82ee72b054a4
* ada/hainque2009-06-091-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/utils2.c (build_call_alloc_dealloc_proc): New helper for build_call_alloc_dealloc with arguments to be interpreted identically. Process the case where a GNAT_PROC to call is provided. (maybe_wrap_malloc): New helper for build_call_alloc_dealloc, to build and return an allocator for DATA_SIZE bytes aimed at containing a DATA_TYPE object, using the default __gnat_malloc allocator. Honor DATA_TYPE alignments greater than what the latter offers. (maybe_wrap_free): New helper for build_call_alloc_dealloc, to release a DATA_TYPE object designated by DATA_PTR using the __gnat_free entry point. (build_call_alloc_dealloc): Expect object data type instead of naked alignment constraint. Use the new helpers. (build_allocator): Remove special processing for the super-aligned case, now handled by build_call_alloc_dealloc. Pass data type instead of the former alignment argument, as expected by the new interface. * gcc-interface/gigi.h (build_call_alloc_dealloc): Adjust prototype and comment. * gcc-interface/trans.c (gnat_to_gnu) <case N_Free_Statement>: Remove special processing for the super-aligned case, now handled by build_call_alloc_dealloc. Pass data type instead of the former alignment argument, as expected by the new interface. testsuite/ * gnat.dg/align_max.adb: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148314 138bc75d-0d04-0410-961f-82ee72b054a4
* * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use themebotcazou2009-05-151-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for bounds. (print_int_cst_bounds_in_octal_p): Likewise. (dbxout_type): Adjust calls to above functions. Be prepared to deal with subtypes. * dwarf2out.c (base_type_die): Likewise. (is_subrange_type): Delete. (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds. (modified_type_die): Call subrange_type_for_debug_p on subtypes. * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if the destination type is boolean. (build_range_check): Do not special-case subtypes. (fold_sign_changed_comparison): Likewise. (fold_unary): Likewise. * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS. * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds. * tree.c (subrange_type_for_debug_p): New predicate based on the former is_subrange_type. * tree.h (subrange_type_for_debug_p): Declare. * tree-chrec.c (avoid_arithmetics_in_type_p): Delete. (convert_affine_scev): Remove call to above function. (chrec_convert_aggressive): Likewise. * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return false for conversions involving subtypes. * tree-vrp.c (vrp_val_max): Do not special-case subtypes. (vrp_val_min): Likewise. (needs_overflow_infinity): Likewise. (extract_range_from_unary_expr): Likewise. ada/ * gcc-interface/ada-tree.h (TYPE_GCC_MIN_VALUE, TYPE_GCC_MAX_VALUE): New macros. (TYPE_RM_VALUES): Likewise. (TYPE_RM_SIZE): Rewrite in terms of TYPE_RM_VALUES. (SET_TYPE_RM_SIZE): New macro. (TYPE_RM_MIN_VALUE, TYPE_RM_MAX_VALUE): Likewise. (SET_TYPE_RM_SIZE, SET_TYPE_RM_MAX_VALUE): Likewise. (TYPE_MIN_VALUE, TYPE_MAX_VALUE): Redefine. * gcc-interface/gigi.h (create_range_type): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type> Use SET_TYPE_RM_MAX_VALUE to set the upper bound on the UMT type. <E_Signed_Integer_Subtype>: Build a regular integer type first and then set the RM bounds. Use SET_TYPE_RM_SIZE to set the RM size. <E_Floating_Point_Subtype>: Build a regular floating-point type first and then set the RM bounds. <E_Array_Type>: Use create_range_type instead of build_range_type. <E_Array_Subtype>: Build a regular integer type first and then set the RM bounds for the extra subtype. <E_String_Literal_Subtype>: Use create_range_type instead of build_range_type. <all>: Set the RM bounds for enumeration types and the GCC bounds for floating-point types. (set_rm_size): Use SET_TYPE_RM_SIZE to set the RM size. (make_type_from_size) <INTEGER_TYPE>: Use SET_TYPE_RM_{MIN,MAX}_VALUE to set the bounds. Use SET_TYPE_RM_SIZE to set the RM size. (substitute_in_type) <INTEGER_TYPE>: Deal with GCC bounds for domain types and with RM bounds for subtypes. * gcc-interface/misc.c (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (gnat_print_type) <REAL_TYPE>: New case. <ENUMERAL_TYPE>: Fall through to above case. (gnat_get_subrange_bounds): New function. * gcc-interface/trans.c (add_decl_expr): Mark the trees rooted as TYPE_RM_MIN_VALUE and TYPE_RM_MAX_VALUE, if any. * gcc-interface/utils.c (gnat_init_decl_processing): Use precision 8 for booleans. Adjust and use SET_TYPE_RM_SIZE to set the RM size. (create_range_type): New function. (create_param_decl): Build a regular integer type first and then set the RM bounds for the extra subtype. (unchecked_convert): Remove kludge for 'Valid. * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Convert the index to sizetype instead of TYPE_DOMAIN. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147563 138bc75d-0d04-0410-961f-82ee72b054a4
* * ttypes.ads (Target_Double_Float_Alignment): New variable.ebotcazou2009-04-241-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Target_Double_Scalar_Alignment): Likewise. * get_targ.ads (Get_Strict_Alignment): Adjust external name. (Get_Double_Float_Alignment): New imported function. (Get_Double_Scalar_Alignment): Likewise. * layout.adb (Set_Elem_Alignment): Take into account specific caps for the alignment of "double" floating-point types and "double" or larger scalar types, as parameterized by Target_Double_Float_Alignment and Target_Double_Scalar_Alignment respectively. * gcc-interface/gigi.h (double_float_alignment): Declare. (double_scalar_alignment): Likewise. (is_double_float_or_array): Likewise. (is_double_scalar_or_array): Likewise. (get_target_double_float_alignment): Likewise. (get_target_double_scalar_alignment): Likewise. * gcc-interface/targtyps.c (get_strict_alignment): Rename into... (get_target_strict_alignment): ...this. (get_target_double_float_alignment): New function. (get_target_double_scalar_alignment): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Test the presence of an alignment clause for under-aligned integer types. Take into account specific caps for the alignment of "double" floating-point types and "double" or larger scalar types, as parameterized by Target_Double_Float_Alignment and Target_Double_Scalar_Alignment respectively. (validate_alignment): Likewise. * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Alignment>: Likewise. (gigi): Initialize double_float_alignment and double_scalar_alignment. * gcc-interface/utils.c (double_float_alignment): New global variable. (double_scalar_alignment): Likewise. (is_double_float_or_array): New predicate. (is_double_scalar_or_array): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146675 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (build_call_alloc_dealloc): Update comment.ebotcazou2009-04-241-4/+7
| | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Pass correct arguments to build_allocator. * gcc-interface/utils2.c (build_call_alloc_dealloc): Update comment. Remove code handling special allocator and assert its uselessness. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146671 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (create_index_type): Adjust head comment.ebotcazou2009-04-231-4/+4
| | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Use front-end predicates to compute signedness and precision. <E_String_Literal_Subtype>: Fold range type. Make sure to set longest_float_type_node to a scalar type. (elaborate_entity): Use consistent Constraint_Error spelling. (substitute_in_type) <INTEGER_TYPE>: Always copy the type. * gcc-interface/misc.c (gnat_print_type) <INTEGER_TYPE>: Use brief output for the modulus, if any. <ENUMERAL_TYPE>: Likewise for the RM size. * gcc-interface/trans.c (gnat_to_gnu): Use consistent Constraint_Error spelling. * gcc-interface/utils.c (finish_record_type): Really test the alignment of BLKmode bit-fields to compute their addressability. (create_index_type): Adjust comments. (create_param_decl): Create the biased subtype manually. * gcc-interface/utils2.c (build_component_ref): Use consistent Constraint_Error spelling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146644 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.def: Fix formatting nits.ebotcazou2009-04-221-52/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (REGION_STMT): Delete. (HANDLER_STMT): Likewise. * gcc-interface/ada-tree.h: Fix formatting nits. (IS_STMT): Delete. (REGION_STMT_BODY): Likewise. (REGION_STMT_HANDLE): Likewise. (REGION_STMT_BLOCK): Likewise. (HANDLER_STMT_ARG): Likewise. (HANDLER_STMT_LIST): Likewise. (HANDLER_STMT_BLOCK): Likewise. * gcc-interface/gigi.h (fp_prec_to_size): Update comment. (fp_size_to_prec): Likewise. (largest_move_alignment): Delete. (gnat_compute_largest_alignment): Likewise. Fix minor nits. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Remove redundant code. <E_Array_Type>: Remove redundant assert. <E_Array_Subtype>: Exit early from index computation in pathological cases. Rewrite conditional assignment. (make_type_from_size): Likewise. * gcc-interface/misc.c (largest_move_alignment): Delete. (gnat_finish_incomplete_decl): Likewise. (LANG_HOOKS_FINISH_INCOMPLETE_DECL): Likewise. (asm_out_file): Likewise (gnat_print_type) <INTEGER_TYPE>: Fall through to ENUMERAL_TYPE case. (gnat_dwarf_name): Move around. * gcc-interface/trans.c (Attribute_to_gnu): Fix minor nits. (gigi): Remove call to gnat_compute_largest_alignment. * utils.c (create_field_decl): Rewrite conditional assignment. Fix minor nits. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146551 138bc75d-0d04-0410-961f-82ee72b054a4
* * fe.h (Get_External_Name): Declare.ebotcazou2009-04-221-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | * gcc-interface/gigi.h (concat_id_with_name): Rename to... (concat_name): ...this. * gcc-interface/decl.c (gnat_to_gnu_entity): Rename gnu_entity_id to gnu_entity_name and adjust for above renaming. <E_Access_Type>: Use create_concat_name to get the name of the various types associated with unconstrained array types. (make_aligning_type): Adjust for above renaming. (maybe_pad_type): Likewise. (components_to_record): Likewise.  Use get_identifier_with_length for the encoding of the variant. (get_entity_name): Use get_identifier_with_length. (create_concat_name): Likewise.  Use Get_External_Name if no suffix. Do not fiddle with Name_Buffer. (concat_id_with_name): Rename to... (concat_name): ...this.  Use get_identifier_with_length.  Do not fiddle with Name_Buffer. * gcc-interface/utils.c (rest_of_record_type_compilation): Adjust for above renaming. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146547 138bc75d-0d04-0410-961f-82ee72b054a4
* Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception.jakub2009-04-091-10/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145841 138bc75d-0d04-0410-961f-82ee72b054a4
* 2009-04-08 Tristan Gingold <gingold@adacore.com>charlet2009-04-081-0/+1
| | | | | | | | | * gcc-interface/utils.c, gcc-interface/decl.c, gcc-interface/gigi.h: Add support for pragma Thread_Local_Storage git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145730 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (standard_datatypes): Remove ADT_void_type_decl.ebotcazou2009-04-071-11/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (void_type_decl_node): Remove. (init_gigi_decls): Likewise. (gnat_install_builtins): Declare. (record_builtin_type): Likewise. (create_type_stub_decl): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Void>: Use void_type. (gnat_to_gnu_entity) <E_Array_Type>: Make fat and thin pointer types artificial. <E_Array_Subtype>: Use the index types, not only their name, in the record giving the names of the bounds, if any. For a packed array type, make it artificial only if the base type was artificial as well. Remove redundant statement. (gnat_to_gnu_entity) <E_Incomplete_Type>: Do not create TYPE_DECL for dummy types. Use create_type_stub_decl to build the TYPE_STUB_DECL of types. (rest_of_type_decl_compilation_no_defer): Likewise. * gcc-interface/misc.c (gnat_printable_name): Add missing guard. * gcc-interface/utils.c (make_dummy_type): Always create TYPE_STUB_DECL and use create_type_stub_decl to build it. (gnat_pushdecl): Rewrite condition. (gnat_install_builtins): Remove bogus declaration. (record_builtin_type): New function. (finish_record_type): Use create_type_stub_decl to build TYPE_STUB_DECL of types. (create_type_stub_decl): New function. (create_type_decl): Assert that the type is not dummy. If the type hasn't been named yet, equate the TYPE_STUB_DECL to the created node. (build_vms_descriptor32): Do not create TYPE_DECL for the descriptor. (build_vms_descriptor): Likewise. (init_gigi_decls): Delete and move bulk of code to... * gcc-interface/trans.c (gigi): ...here. Use record_builtin_type. (emit_range_check): Add gnat_node parameter. (emit_index_check): Likewise. (emit_check): Likewise. (build_unary_op_trapv): Likewise. (build_binary_op_trapv): Likewise. (convert_with_check): Likewise. (Attribute_to_gnu): Adjust calls for above changes. (call_to_gnu): Likewise. (gnat_to_gnu): Likewise. (assoc_to_constructor): Likewise. (pos_to_constructor): Likewise. (Sloc_to_locus): Set BUILTINS_LOCATION for Standard_Location nodes. (process_type): Do not create TYPE_DECL for dummy types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145660 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/ada/rwild2008-09-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | * a-crbtgk.adb, a-direct.ads, a-tasatt.adb, ali.ads, bindgen.adb, checks.adb, einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_dbug.ads, exp_disp.adb, exp_dist.adb, exp_pakd.adb, exp_util.adb, g-alveop.ads, g-comlin.adb, g-comlin.ads, g-diopit.adb, g-socket.ads, gcc-interface/decl.c, gcc-interface/gigi.h, gcc-interface/trans.c, lib-load.adb, lib-xref.ads, make.adb, mlib-prj.adb, nlists.ads, opt.ads, par-ch10.adb, par-ch5.adb, par.adb, s-os_lib.ads, s-oscons-tmplt.c, s-parint.ads, s-regpat.ads, s-shasto.ads, s-stausa.ads, s-taprop-vms.adb, sem.adb, sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_elim.adb, sem_prag.adb, sem_util.adb, sem_util.ads, sem_warn.adb, sinfo.ads, styleg.adb, vms_data.ads: Fix typos in comments. * gnathtml.pl: Fix typos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140356 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-08-06 Doug Rupp <rupp@adacore.com>charlet2008-08-061-0/+14
| | | | | | | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_param): Force 32bit descriptor if TARGET_MALLOC64 clear. * gcc-interface/utils2.c (build_call_alloc_dealloc): Force 32bit malloc if TARGET_MALLOC64 clear. * gcc-interface/gigi.h (TARGET_ABI_OPEN_VMS): Move here from utils2.c (TARGET_MALLC64): New macro. Default to clear. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138768 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-08-04 Doug Rupp <rupp@adacore.com>charlet2008-08-041-2/+4
| | | | | | | | | | | * gigi.h (fill_vms_descriptor): Add third parameter gnat_actual * trans.c (call_to_gnu): Call fill_vms_descriptor with new parameter. * utils2.c (fill_vms_descriptor): Add third parameter for error sloc and use it. Calculate pointer range overflow using 64bit types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138594 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-08-01 Doug Rupp <rupp@adacore.com>charlet2008-08-011-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnat_rm.texi: Document new mechanism Short_Descriptor. * types.ads (Mechanism_Type): Modify range for new Short_Descriptor mechanism values. * sem_prag.adb (Set_Mechanism_Value): Enhance for Short_Descriptor mechanism and Short_Descriptor mechanism values. * snames.adb (preset_names): Add short_descriptor entry. * snames.ads: Add Name_Short_Descriptor. * types.h: Add new By_Short_Descriptor mechanism values. * sem_mech.adb (Set_Mechanism_Value): Enhance for Short_Descriptor mechanism and Short_Descriptor mechanism values. * sem_mech.ads (Mechanism_Type): Add new By_Short_Descriptor mechanism values. (Descriptor_Codes): Modify range for new mechanism values. * treepr.adb (Print_Entity_Enfo): Handle new By_Short_Descriptor mechanism values. * gcc-interface/decl.c (gnat_to_gnu_entity): Handle By_Short_Descriptor. (gnat_to_gnu_param): Handle By_Short_Descriptor. * gcc-interface/gigi.h (build_vms_descriptor64): Remove prototype. (build_vms_descriptor32): New prototype. (fill_vms_descriptor): Remove unneeded gnat_actual parameter. * gcc-interface/trans.c (call_to_gnu): Removed unneeded gnat_actual argument in call fill_vms_descriptor. * gcc-interface/utils.c (build_vms_descriptor32): Renamed from build_vms_descriptor and enhanced to hande Short_Descriptor mechanism. (build_vms_descriptor): Renamed from build_vms_descriptor64. (convert_vms_descriptor32): New function. (convert_vms_descriptor64): New function. (convert_vms_descriptor): Rewrite to handle both 32bit and 64bit descriptors. * gcc-interface/utils2.c (fill_vms_descriptor): Revert previous changes, no longer needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138473 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-07-31 Geert Bosch <bosch@adacore.com>charlet2008-07-311-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * arit64.c: New file implementing __gnat_mulv64 signed integer multiplication with overflow checking * fe.h (Backend_Overflow_Checks_On_Target): Define for use by Gigi * gcc-interface/gigi.h: (standard_types): Add ADT_mulv64_decl (mulv64_decl): Define subprogram declaration for __gnat_mulv64 * gcc-interface/utils.c: (init_gigi_decls): Add initialization of mulv64_decl * gcc-interface/trans.c: (build_unary_op_trapv): New function (build_binary_op_trapv): New function (gnat_to_gnu): Use the above functions instead of build_{unary,binary}_op * gcc-interface/Makefile.in (LIBGNAT_SRCS): Add arit64.c (LIBGNAT_OBJS): Add arit64.o git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138384 138bc75d-0d04-0410-961f-82ee72b054a4
* PR ada/36554ebotcazou2008-07-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | * dwarf2out.c (is_subrange_type): Deal with BOOLEAN_TYPE. ada/ * back_end.adb (Call_Back_End): Pass Standard_Boolean to gigi. * gcc-interface/gigi.h (gigi): Take new standard_boolean parameter. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Enumeration_Subtype>: Set precision to 1 for subtype of BOOLEAN_TYPE. (set_rm_size): Set TYPE_RM_SIZE_NUM for BOOLEAN_TYPE. (make_type_from_size): Deal with BOOLEAN_TYPE. * gcc-interface/misc.c (gnat_print_type): Likewise. * gcc-interface/trans.c (gigi): Take new standard_boolean parameter. Set boolean_type_node as its translation in the table, as well as boolean_false_node for False and boolean_true_node for True. * gcc-interface/utils.c (gnat_init_decl_processing): Create custom 8-bit boolean_type_node and set its TYPE_RM_SIZE_NUM. (create_param_decl): Deal with BOOLEAN_TYPE. (build_vms_descriptor): Likewise. (build_vms_descriptor64): Likewise. (convert): Deal with BOOLEAN_TYPE like with ENUMERAL_TYPE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138348 138bc75d-0d04-0410-961f-82ee72b054a4
* 2008-07-30 Doug Rupp <rupp@adacore.com>charlet2008-07-301-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | * gigi.h (build_vms_descriptor64): New function prototype. (fill_vms_descriptor): Modified function prototype. * utils.c (build_vms_descriptor64): New function. * utils2.c (fill_vms_descriptor): Fix handling on 32bit systems. * trans.c (call_to_gnu): Call fill_vms_descriptor with new third argument. * decl.c (gnat_to_gnu_tree): For By_Descriptor mech, build both a 64bit and 32bit descriptor and save the 64bit version as an alternate TREE_TYPE in the parameter. (make_type_from_size) <RECORD_TYPE>: Use the appropriate mode for the thin pointer. * ada-tree.h (DECL_PARM_ALT, SET_DECL_PARM_ALT): New macros. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138307 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface: New directory.charlet2008-07-291-0/+905
* ada-tree.def, cuintp.c, gigi.h, Makefile.in, targtyps.c, ada.h, utils.c, ada-tree.h, decl.c, lang.opt, Make-lang.in, trans.c, config-lang.in, deftarg.c, lang-specs.h, misc.c, utils2.c: Moved to gcc-interface subdirectory. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138246 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud