summaryrefslogtreecommitdiffstats
path: root/gcc/ada/gcc-interface/trans.c
Commit message (Collapse)AuthorAgeFilesLines
...
* * gcc-interface/trans.c (Attribute_to_gnu): Use remove_conversions.ebotcazou2011-10-121-12/+5
| | | | | | | | | | | | | (push_range_check_info): Likewise. (gnat_to_gnu) <N_Code_Statement>: Likewise. * gcc-interface/utils2.c (build_unary_op) <INDIRECT_REF>: Likewise. (gnat_invariant_expr): Likewise. * gcc-interface/utils.c (compute_related_constant): Likewise. (max_size): Fix handling of SAVE_EXPR. (remove_conversions): Fix formatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179873 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.h (DECL_LOOP_PARM_P): New flag.ebotcazou2011-10-121-58/+209
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (DECL_INDUCTION_VAR): New macro. (SET_DECL_INDUCTION_VAR): Likewise. * gcc-interface/gigi.h (convert_to_index_type): Declare. (gnat_invariant_expr): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <object>: If this is a loop parameter, set DECL_LOOP_PARM_P on it. * gcc-interface/misc.c (gnat_print_decl) <VAR_DECL>: If DECL_LOOP_PARM_P is set, print DECL_INDUCTION_VAR instead of DECL_RENAMED_OBJECT. * gcc-interface/trans.c (gnu_loop_label_stack): Delete. (struct range_check_info_d): New type. (struct loop_info_d): Likewise. (gnu_loop_stack): New stack. (Identifier_to_gnu): Set TREE_READONLY flag on the first dereference built for a by-double-ref read-only parameter. If DECL_LOOP_PARM_P is set, do not test DECL_RENAMED_OBJECT. (push_range_check_info): New function. (Loop_Statement_to_gnu): Push a new struct loop_info_d instead of just the label. Reference the label and the iteration variable from it. Build the special induction variable in the unsigned version of the size type, if it is larger than the base type. And attach it to the iteration variable if the latter isn't by-ref. In the iteration scheme case, initialize the invariant conditions in front of the loop if deemed profitable. Use gnu_loop_stack. (gnat_to_gnu) <N_Exit_Statement>: Use gnu_loop_stack. <N_Raise_Constraint_Error>: Always process the reason. In the range check and related cases, and if loop unswitching is enabled, compute invariant conditions and push this information onto the stack. Do not translate again the condition if it has been already translated. * gcc-interface/utils.c (record_global_renaming_pointer): Assert that DECL_LOOP_PARM_P isn't set. (convert_to_index_type): New function. * gcc-interface/utils2.c (build_binary_op) <ARRAY_REF>: Use it in order to convert the index from the base index type to sizetype. (gnat_invariant_expr): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179868 138bc75d-0d04-0410-961f-82ee72b054a4
* Convert standard builtin functions from being arrays to using a functional ↵meissner2011-10-111-2/+2
| | | | | | interface git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179820 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (gnat_useless_type_conversion): Declare.ebotcazou2011-10-071-6/+337
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (rest_of_subprog_body_compilation): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: For renaming, test for useless conversions by means of gnat_useless_type_conversion. * gcc-interface/trans.c: Include bitmap.h and cgraph.h. (language_function): Add named_ret_val and other_ret_val. (f_named_ret_val): New macro. (f_other_ret_val): Likewise. (gigi): Call rest_of_subprog_body_compilation. (struct nrv_data): New structure. (is_nrv_p): New predicate. (prune_nrv_r): New helper function. (prune_nrv_in_block): New function. (finalize_nrv_r): New helper function. (finalize_nrv): New function. (return_value_ok_for_nrv_p): New predicate. (build_return_expr): If optimization is enabled, record candidates for the Named Return Value optimization. (build_function_stub): Call rest_of_subprog_body_compilation. (Subprogram_Body_to_gnu): If optimization is enabled and there are candidates, finalize the Named Return Value optimization. Call rest_of_subprog_body_compilation. (call_to_gnu): At the end, if a return value is needed, simplify the result before wrapping it up in a COMPOUND_EXPR. * gcc-interface/utils.c (end_subprog_body): Split into... (rest_of_subprog_body_compilation): ...this. New function. (gnat_useless_type_conversion): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179650 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (create_subprog_decl): Replace TREE_CHAIN withebotcazou2011-09-261-6/+6
| | | | | | | | | | | | | | DECL_CHAIN in comment. * gcc-interface/trans.c (gigi): Likewise. (Attribute_to_gnu): Likewise. (build_function_stub): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils.c (create_subprog_decl): Likewise. (convert_vms_descriptor64): Likewise. (convert_vms_descriptor32): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179185 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (assoc_to_constructor): Minor tweaks.ebotcazou2011-09-261-17/+10
| | | | | | | | | * gcc-interface/utils2.c (build_simple_component_ref): Fix formatting issues. Use COMPLETE_TYPE_P in assertion. Also set TREE_READONLY if the type of the record is TYPE_READONLY. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179184 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.h (TYPE_NULL_BOUNDS): New macro.ebotcazou2011-09-261-0/+1
| | | | | | | | | | | | | | | | | | | (SET_TYPE_NULL_BOUNDS): Likewise. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Set again TREE_THIS_NOTRAP on the INDIRECT_REF node built for the template. * gcc-interface/trans.c (Identifier_to_gnu): Return initializers of fat pointer types. * gcc-interface/utils.c (create_var_decl_1): If the object is external, check that the initializer is a valid constant expression for use in initializing a static variable. Add missing guard. (update_pointer_to): Adjust TYPE_NULL_BOUNDS if set. (convert_to_fat_pointer): In the null fat pointer case, build a valid pointer for the bounds. * gcc-interface/utils2.c (compare_fat_pointers): New function. (build_binary_op) <EQ_EXPR>: Call it to compare fat pointers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179180 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.h (TREE_THIS_NOTRAP): Redefine.ebotcazou2011-09-251-28/+38
| | | | | | | | | | | | | * gcc-interface/trans.c (Identifier_to_gnu): Factor out common code in the by-ref case. Do not set TREE_READONLY on a renamed object. Set TREE_THIS_NOTRAP on UNCONSTRAINED_ARRAY_REF nodes. (Attribute_to_gnu) <Attr_Length>: Expand the use of the parameter cache to the indirect case. * gcc-interface/utils.c (convert) <UNCONSTRAINED_ARRAY_REF>: Preserve the TREE_THIS_NOTRAP flag. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179171 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Loop_Statement_to_gnu): In the case of anebotcazou2011-09-251-60/+99
| | | | | | | | iteration scheme, always generate the do-while form if optimization is enabled. Use more straightforward test at the end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179169 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Subtype>: Useebotcazou2011-09-251-52/+44
| | | | | | | | | | XNEW instead of xmalloc. Do not build useless pointer type. <E_Anonymous_Access_Subprogram_Type>: Use XNEW instead of xmalloc. * gcc-interface/trans.c (gnat_to_gnu) <N_Raise_Constraint_Error>: Tidy. * gcc-interface/utils2.c (build_unary_op): Remove local variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179168 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/decl.c (maybe_pad_type): Do not try to change the formebotcazou2011-09-111-0/+22
| | | | | | | | | of an addressable type. * gcc-interface/trans.c (gnat_gimplify_expr) <VIEW_CONVERT_EXPR>: New. Deal with those cases for which creating a temporary is mandatory. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178764 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (call_to_gnu): Use local variable. Make sureebotcazou2011-09-111-15/+10
| | | | | | | this is a real formal parameter before testing whether it is by ref. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178763 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (build_call_0_expr): Delete.ebotcazou2011-09-111-22/+23
| | | | | | | | | | | | | | | | | | | | | | | | | (build_call_1_expr): Likewise. (build_call_2_expr): Likewise. (build_call_n_expr): New prototype. * gcc-interface/decl.c (gnat_to_gnu_entity): Use build_call_n_expr. * gcc-interface/trans.c (establish_gnat_vms_condition_handler): Ditto. (Handled_Sequence_Of_Statements_to_gnu): Likewise. (Exception_Handler_to_gnu_zcx): Likewise. (gnat_to_gnu): Likewise. (build_binary_op_trapv): Likewise. * gcc-interface/utils2.c (build_call_0_expr): Delete. (build_call_1_expr): Likewise. (build_call_2_expr): Likewise. (build_call_n_expr): New function. (build_call_raise): Use build_call_n_expr. (build_call_raise_range): Likewise. (build_call_raise_column): Likewise. (build_call_alloc_dealloc_proc): Likewise. (maybe_wrap_malloc): Likewise. (maybe_wrap_free): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178762 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (build_return_expr): Use void_type_node forebotcazou2011-09-111-1/+1
| | | | | | | | | | | | MODIFY_EXPR. * gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Assert that the result type is null if ENABLE_CHECKING. Set operation_type at the end unconditionally if not set in the previous cases. Use build2 and void_type_node for MODIFY_EXPR. (build_allocator): Use NULL_TREE for MODIFY_EXPR. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178761 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-09-06 Robert Dewar <dewar@adacore.com>charlet2011-09-061-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * s-tpopsp-vxworks.adb, prj-nmsc.adb: Minor reformatting. 2011-09-06 Hristian Kirtchev <kirtchev@adacore.com> * gcc-interface/trans.c (Attribute_to_gnu): New case for attribute Descriptor_Size. * exp_attr.adb (Expand_N_Attribute_Reference): Add processing for attribute Descriptor_Size. * exp_ch7.adb (Double_Size_Of): Removed. (Make_Finalize_Address_Stmts): Remove the code which generates an expression to calculate the dope vector of an unconstrained array. Instead use attribute Descriptor_Size and leave the calculation to the back end. (Nearest_Multiple_Rounded_Up): Removed. (Size_Of): Removed. * sem_attr.adb (Analyze_Attribute): Add processing for attribute Descriptor_Size. Currently the attribute is applicable only to unconstrained arrays. (Eval_Attribute): Add processing for attribute Descriptor_Size. * snames.ads-tmpl: Add a predefined name and an Attribute_Id for Descriptor_Size. 2011-09-06 Ed Schonberg <schonberg@adacore.com> * exp_aggr.adb: Remove useless formal. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178585 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-08-29 Gary Dismukes <dismukes@adacore.com>charlet2011-08-291-3/+35
| | | | | | | | | | | | | | | | | | | | * exp_ch3.adb (Build_Record_Init_Proc.Build_Init_Procedure): Set Exception_Handlers to No_List instead of Empty_List in the case where there are no handlers. 2011-08-29 Tristan Gingold <gingold@adacore.com> * gcc-interface/gigi.h (enum standard_datatypes): Add ADT_reraise_zcx_decl (reraise_zcx_decl): New macro. * gcc-interface/trans.c (gnu_incoming_exc_ptr): New variable. (gigi): Set reraise_zcx_decl. (Exception_Handler_to_gnu_zcx): Save and restore gnu_incoming_exc_ptr. (gnat_to_gnu): Handle N_Raise_Statement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178212 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (enumerate_modes): Fix formatting.ebotcazou2011-08-071-6/+0
| | | | | | | * gcc-interface/trans.c (Subprogram_Body_to_gnu): Revert latest change. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177548 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-08-02 Geert Bosch <bosch@adacore.com>charlet2011-08-021-0/+6
| | | | | | | | | | | | | | * gcc-interface/gigi.h, gcc-interface/misc.c (enumerate_modes): New function. * gcc-interface/Make-lang.in: Update dependencies. 2011-08-02 Olivier Hainque <hainque@adacore.com> * gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the function end_locus. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177141 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (build_function_stub): Remove.ebotcazou2011-07-241-31/+133
| | | | | | | | | | | | | | | | | | | (build_return_expr): Likewise. (convert_vms_descriptor): Declare. * gcc-interface/utils.c (convert_vms_descriptor): Make global. (build_function_stub): Move to... * gcc-interface/utils2.c (build_return_expr): Move to... * gcc-interface/trans.c (build_function_stub): ...here. (build_return_expr): ...here. (Subprogram_Body_to_gnu): Add local variable for language_function. Disconnect the parameter attributes cache, if any, once done with it. Call end_subprog_body only after setting the end_locus. Build the stub associated with the function, if any, at the very end. (gnat_to_gnu) <N_Return_Statement>: Remove couple of useless local variables and streamline control flow. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176712 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Identifier_to_gnu): Don't set TREE_THIS_NOTRAPebotcazou2011-06-181-1/+2
| | | | | | | on a dereference built for a by-ref object if it has an address clause. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175172 138bc75d-0d04-0410-961f-82ee72b054a4
* * einfo.ads (Address_Taken): Document use for the second argument ofebotcazou2011-06-181-6/+20
| | | | | | | | | | | | | | Asm_Input and Asm_Output attributes. * sem_attr.adb (Analyze_Attribute) <Attribute_Asm_Input>: If the second argument is an entity name, then set Address_Taken on it. <Attribute_Asm_Output>: Likewise. * gcc-interface/trans.c (lvalue_required_for_attribute_p): Handle the Attr_Asm_Input and Attr_Asm_Output attributes explicitly. (gnat_to_gnu) <N_Code_Statement>: If an operand is going to end up in memory and is a CONST_DECL, retrieve its corresponding VAR_DECL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175171 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Identifier_to_gnu): Also handle deferredebotcazou2011-06-061-3/+5
| | | | | | | constants whose full view has discriminants specially. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@174689 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-18 Kai Tietz <ktietz@redhat.com>ktietz2011-05-181-3/+3
| | | | | | | | | | | * gcc-interface/trans.c (Exception_Handler_to_gnu_sjlj): Use boolean_false_node instead of integer_zero_node. (convert_with_check): Likewise. * gcc-interface/decl.c (choices_to_gnu): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173846 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (call_to_gnu): In the by-reference case, if theebotcazou2011-05-121-4/+10
| | | | | | | | type of the parameter is an unconstrained array, convert the actual to the type of the formal in the In Out and Out cases as well. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173706 138bc75d-0d04-0410-961f-82ee72b054a4
* generalize build_case_label to the rest of the compilerfroydnj2011-05-061-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ada/ * gcc-interface/trans.c (Case_Statement_to_gnu): Call build_case_label. gcc/ * except.c (sjlj_emit_dispatch_table): Call build_case_label. * gimplify.c (gimplify_switch_expr): Likewise. * omp-low.c (expand_omp_sections): Likewise. * tree-eh.c (lower_try_finally_switch): Likewise. (lower_eh_dispatch): Likewise. * tree.h (build_case_label): Declare. * tree.c (build_case_label): Define. gcc/c-family/ * c-common.c (c_add_case_label): Omit the loc argument to build_case_label. * c-common.h (build_case_label): Remove. * c-semantics.c (build_case_label): Remove. gcc/cp/ * decl.c (finish_case_label): Omit the loc argument to build_case_label. gcc/fortran/ * trans-decl.c (gfc_trans_entry_master_switch): Call build_case_label. * trans-io.c (add_case): Likewise. * trans-stmt.c (gfc_trans_integer_select): Likewise. (gfc_trans_character_select): Likewise. gcc/go/ * go-gcc.cc (Gcc_backend::switch_statement): Call build_case_label. gcc/java/ * expr.c (expand_java_switch): Call build_case_label. (expand_java_add_case): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173467 138bc75d-0d04-0410-961f-82ee72b054a4
* 2011-05-04 Richard Guenther <rguenther@suse.de>rguenth2011-05-041-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tree.h (int_const_binop): Remove notrunc argument. * fold-const.c (int_const_binop): Remove notrunc argument. Always create integer constants that are properly truncated. (extract_muldiv_1): Expand one notrunc int_const_binop caller. (const_binop): Remove zero notrunc argument to int_const_binop. (size_binop_loc): Likewise. (fold_div_compare): Likewise. (maybe_canonicalize_comparison_1): Likewise. (fold_comparison): Likewise. (fold_binary_loc): Likewise. (multiple_of_p): Likewise. * expr.c (store_constructor): Likewise. * gimple-fold.c (maybe_fold_offset_to_array_ref): Likewise. (maybe_fold_stmt_addition): Likewise. * ipa-prop.c (ipa_modify_call_arguments): Likewise. * stor-layout.c (layout_type): Likewise. * tree-data-ref.c (tree_fold_divides_p): Likewise. * tree-sra.c (build_ref_for_offset): Likewise. (build_user_friendly_ref_for_offset): Likewise. * tree-ssa-address.c (maybe_fold_tmr): Likewise. * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise. * tree-ssa-loop-niter.c (inverse): Likewise. * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise. * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise. * tree-switch-conversion.c (check_range): Likewise. (build_constructors): Likewise. * tree-vect-generic.c (expand_vector_piecewise): Likewise. * tree-vrp.c (set_and_canonicalize_value_range): Likewise. (extract_range_from_assert): Likewise. (vrp_int_const_binop): Likewise. (extract_range_from_binary_expr): Likewise. (extract_range_from_unary_expr): Likewise. (check_array_ref): Likewise. (find_case_label_range): Likewise. (simplify_div_or_mod_using_ranges): Likewise. * tree-cfg.c (group_case_labels_stmt): Use double-ints for comparing case labels for merging. ada/ * gcc-interface/trans.c (gnat_to_gnu): Remove zero notrunc argument to int_const_binop. (pos_to_constructor): Likewise. fortran/ * trans-types.c (gfc_get_array_type_bounds): Remove zero notrunc argument to int_const_binop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173356 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (gigi): Call build_function_type_list insteadebotcazou2011-05-031-87/+64
| | | | | | | | | | of build_function_type. Adjust calls to... (build_raise_check): ...this. Do not take a void_tree parameter. Call build_function_type_list instead of build_function_type. Fix head comment and swap couple of conditional blocks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173325 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (create_subprog_decl): Add ARTIFICIAL_FLAGebotcazou2011-04-221-22/+20
| | | | | | | | | | | | | | | | | | | | parameter. * gcc-interface/utils.c (create_subprog_decl): Likewise. Set DECL_ARTIFICIAL and DECL_NO_INLINE_WARNING_P on the DECL accordingly. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: Add ARTIFICIAL_FLAG local variable and pass it to create_subprog_decl. <all>: Do not set flags on the reused DECL node coming from an alias. Set DECL_IGNORED_P on the DECL node built for subprograms if they don't need debug info here... * gcc-interface/trans.c (Subprogram_Body_to_gnu): ...and not here. (gigi): Adjust calls to create_subprog_decl. (build_raise_check): Likewise. (establish_gnat_vms_condition_handler): Likewise. (Compilation_Unit_to_gnu): Likewise. (gnat_to_gnu): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172862 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Identifier_to_gnu): Do not return initializersebotcazou2011-04-081-2/+6
| | | | | | | of aggregate types that contain a placeholder. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@172209 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/ada-tree.h (DECL_TAFT_TYPE_P): New flag.ebotcazou2011-04-021-9/+25
| | | | | | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Incomplete_Type>: Set it if this is a Taft amendment type and the full declaration is available. * gcc-interface/trans.c (process_type): Likewise. If there is an old type, mark the new one as used if DECL_TAFT_TYPE_P. (process_freeze_entity): Likewise. * gcc-interface/utils.c (dummy_global): New static variable. (gnat_write_global_declarations): If there are types declared as used at the global level, insert them in the global hash table. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171881 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (record_builtin_type): Add ARTIFICIAL_P param.ebotcazou2011-04-021-7/+8
| | | | | | | | | | | | * gcc-interface/utils.c (gnat_pushdecl): If this is a non-artificial declaration of an array type, then set DECL_ORIGINAL_TYPE to a distinct copy. (record_builtin_type): Add ARTIFICIAL_P parameter. Set DECL_ARTIFICIAL flag of the type accordingly. * gcc-interface/trans.c (gigi): Adjust calls to record_builtin_type. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171880 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (finalize_from_with_types): Adjust comment.ebotcazou2011-03-261-11/+7
| | | | | | | | | | | | | | * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Access_Type>: Defer unconditionally to the end of the unit when the designated type is limited_with'ed. <all>: Rename local variable. Attempt to un-defer types only and do it for limited_with'ed types as well. (finalize_from_with_types): Adjust comment. Rename variable and tidy. * gcc-interface/trans.c (Compilation_Unit_to_gnu): Use GNAT_UNIT consistently and remove redundant call to finalize_from_with_types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171552 138bc75d-0d04-0410-961f-82ee72b054a4
* * inline.adb (Back_End_Cannot_Inline): Lift restriction on calls toebotcazou2011-03-261-14/+14
| | | | | | | | | | | | subprograms without a previous spec declared in the same unit. * gcc-interface/trans.c (Compilation_Unit_to_gnu): Process inlined subprograms at the end of the unit instead of at the beginning. * gcc-interface/utils.c (create_subprog_decl): Check that the entity isn't public for the special handling of non-inline functions nested inside inline external functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171551 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (gnat_to_gnu): Remove obsolete case ofebotcazou2011-03-241-15/+7
| | | | | | | non-conversion to the nominal result type at the end. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171398 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (create_temporary): New function taken from...ebotcazou2011-03-231-71/+110
| | | | | | | | | | | (create_init_temporary): ...here. Call it. (call_to_gnu): Create the temporary for the return value early, if any. Create it for a function with copy-in/copy-out parameters if there is no target; in other cases of copy-in/copy-out, use another temporary. Push the new binding level lazily. Add and rename local variables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171345 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (smaller_form_type_p): Declare.ebotcazou2011-03-171-25/+0
| | | | | | | | | * gcc-interface/trans.c (smaller_form_type_p): Make global and move... * gcc-interface/utils.c (smaller_form_type_p): ...to here. (convert): Deal with conversions from a smaller form type specially. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171091 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (fill_vms_descriptor): Take GNU_TYPE instead ofebotcazou2011-02-031-3/+3
| | | | | | | | | | | | | | | | GNAT_FORMAL. * gcc-interface/utils2.c (fill_vms_descriptor): Move from here to... * gcc-interface/utils.c (fill_vms_descriptor): ...here. Take GNU_TYPE instead of GNAT_FORMAL. Protect the expression against multiple uses. Do not generate the check directly, instead instantiate the template check present in the descriptor. (make_descriptor_field): Move around. (build_vms_descriptor32): Build a template check in the POINTER field. (build_vms_descriptor): Remove useless suffixes. * gcc-interface/trans.c (call_to_gnu): Adjust fill_vms_descriptor call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169788 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Case_Statement_to_gnu): Put the SLOC of theebotcazou2011-01-041-2/+8
| | | | | | | end-of-case on the end label and its associated gotos, if any. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168458 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (Subprogram_Body_to_gnu): Evaluate theebotcazou2011-01-041-25/+25
| | | | | | | | expressions of the parameter cache within the statement group of the CICO mechanism. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168456 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (BLOCK_SOURCE_END_LOCATION): Provide default.ebotcazou2011-01-041-11/+74
| | | | | | | | | | | | | (set_end_locus_from_node): New function. (Subprogram_Body_to_gnu): Use it to mark both the inner BIND_EXPR we make and the function end_locus. (Compilation_Unit_to_gnu): Call it instead of a straight Sloc_to_locus for the elaboration subprogram. (set_gnu_expr_location_from_node) <default case>: Use it to attempt to set the end_locus of the expression as well. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168455 138bc75d-0d04-0410-961f-82ee72b054a4
* PR ada/47131ebotcazou2011-01-041-22/+1
| | | | | | | | * gcc-interface/trans.c (Identifier_to_gnu): In SJLJ mode, do not make variables that are referenced in exception handlers volatile. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168454 138bc75d-0d04-0410-961f-82ee72b054a4
* Fix typos in gcc/ada.rwild2010-12-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc/ada/: * projects.texi: Fix typos. * gnat_rm.texi: Likewise. * gnat_ugn.texi: Likewise. * sem_util.adb: Fix typo in variable, typos in comments. * a-btgbso.adb: Fix typos in comments. * a-cbdlli.adb, a-cbhase.ads, a-cdlili.adb, a-cobove.adb, a-coinve.adb, a-convec.adb, a-direct.ads, a-strunb-shared.adb, a-strunb-shared.ads, a-stuten.ads, a-stwiun-shared.adb, a-stwiun-shared.ads, a-stzunb-shared.adb, a-stzunb-shared.ads, a-suenco.adb, a-suenst.adb, a-suewst.adb, a-suezst.adb, ali.ads, aspects.ads, atree.ads, binde.adb, bindgen.adb, checks.adb, checks.ads, einfo.ads, err_vars.ads, errout.adb, errout.ads, exp_aggr.adb, exp_attr.adb, exp_cg.adb, exp_ch3.adb, exp_ch4.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_dbug.ads, exp_disp.adb, exp_fixd.ads, freeze.adb, g-altive.ads, g-comlin.ads, g-excact.ads, g-mbdira.adb, g-sechas.ads, g-sehash.ads, g-sha1.ads, g-sha224.ads, g-sha256.ads, g-sha384.ads, g-sha512.ads, g-shsh32.ads, g-shsh64.ads, g-socket.adb, g-socket.ads, g-sothco.ads, gcc-interface/decl.c, gcc-interface/trans.c, gcc-interface/utils2.c, gnat1drv.adb, init.c, inline.adb, link.c, locales.c, make.adb, mingw32.h, namet.ads, osint.adb, par-ch12.adb, par-ch13.adb, par-ch3.adb, par-ch4.adb, par-prag.adb, par.adb, par_sco.adb, prepcomp.adb, prj-conf.ads, prj-dect.adb, prj-env.adb, prj-env.ads, prj-nmsc.adb, prj-tree.ads, prj-util.ads, prj.adb, prj.ads, s-auxdec-vms-alpha.adb, s-auxdec-vms_64.ads, s-oscons-tmplt.c, s-osinte-vxworks.ads, s-osprim-mingw.adb, s-regexp.adb, s-stusta.adb, s-taprop-mingw.adb, s-taprop-solaris.adb, scn.adb, scos.ads, sem.adb, sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_aux.ads, sem_ch12.adb, sem_ch12.ads, sem_ch13.adb, sem_ch13.ads, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_disp.adb, sem_disp.ads, sem_eval.adb, sem_intr.adb, sem_prag.adb, sem_res.adb, sem_scil.adb, sem_util.ads, sem_warn.adb, sem_warn.ads, sinfo.ads, socket.c, styleg.adb, switch.ads, sysdep.c, tb-alvxw.c, xoscons.adb: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@168082 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (can_be_lower_p): New predicate.ebotcazou2010-12-131-7/+30
| | | | | | | | (Loop_Statement_to_gnu): Do not generate the entry condition if we know that it will be true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167757 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (addressable_p): Rewrite obsolete paragraph inebotcazou2010-11-171-4/+5
| | | | | | | head comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166864 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (gigi): Don't set 'pure' flag on SJLJ routines.ebotcazou2010-11-101-4/+0
| | | | | | | | | * gcc-interface/utils2.c (compare_arrays): Add LOC parameter. Set it directly on all the comparison expressions. (build_binary_op): Pass input_location to compare_arrays. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166533 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/trans.c (lvalue_required_p) <N_Type_Conversion>): Lookebotcazou2010-11-101-18/+15
| | | | | | | | | | through it for elementary types as well. <N_Unchecked_Type_Conversion>: Adjust to above change. <N_Allocator>: Likewise. (gnat_to_gnu): Do not attempt to rewrite boolean literals. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166532 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc-interface/gigi.h (add_stmt_force): Declare.ebotcazou2010-11-031-9/+30
| | | | | | | | | | | | | (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
* * gcc-interface/trans.c (gigi): Fix formatting issues.ebotcazou2010-10-271-34/+38
| | | | | | | | | | (build_raise_check): Likewise. (gnat_to_gnu): Likewise. * gcc-interface/utils2.c (build_call_raise_range): Likewise. (build_call_raise_column): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166017 138bc75d-0d04-0410-961f-82ee72b054a4
* 2010-10-26 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>charlet2010-10-261-18/+7
| | | | | | | | | | | * 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/decl.c (gnat_to_gnu_entity, case E_Function): Allowebotcazou2010-10-251-113/+231
| | | | | | | | | | | | | | | | | In Out/Out parameters for functions. * gcc-interface/trans.c (gnu_return_var_stack): New variable. (create_init_temporary): New static function. (Subprogram_Body_to_gnu): Handle In Out/Out parameters for functions. (call_to_gnu): Likewise. Use create_init_temporary in order to create temporaries for unaligned parameters and return value. If there is an unaligned In Out or Out parameter passed by reference, push a binding level if not already done. If a binding level has been pushed and the call is returning a value, create the call statement. (gnat_to_gnu) <N_Return_Statement>: Handle In Out/Out parameters for functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165914 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud