OSDN Git Service

* gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.
[pf3gnuchains/gcc-fork.git] / gcc / ada / ChangeLog
index c740fa8..8cd43c6 100644 (file)
@@ -1,3 +1,73 @@
+2010-04-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.
+       * 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.
+
+2010-04-08  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * 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.
+
 2010-04-07  Eric Botcazou  <ebotcazou@adacore.com>
 
        * exp_pakd.adb (Create_Packed_Array_Type): Always use a modular type