OSDN Git Service

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Class_Wide_Type>: Fix
[pf3gnuchains/gcc-fork.git] / gcc / ada / ChangeLog
index 3643811..79c4721 100644 (file)
@@ -1,3 +1,90 @@
+2010-04-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Class_Wide_Type>: Fix
+       comment.
+       * gcc-interface/trans.c (process_freeze_entity): Use local copy of
+       Ekind.  Return early for class-wide types.  Do not compute initializer
+       unless necessary.  Reuse the tree for an associated class-wide type
+       only if processing its root type.
+
+2010-04-13  Duncan Sands  <baldrick@free.fr>
+
+       * gcc-interface/misc.c (gnat_eh_type_covers): Remove.
+       * gcc-interface/trans.c (Exception_Handler_to_gnu_zcx): Update comment.
+
+2010-04-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.
+       (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.
+
+2010-04-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/ada-tree.h (TYPE_BY_REFERENCE_P): Delete.
+       (DECL_CONST_ADDRESS_P): New macro.
+       (SET_DECL_ORIGINAL_FIELD_TO_FIELD): Likewise.
+       (SAME_FIELD_P): Likewise.
+       * gcc-interface/decl.c (constructor_address_p): New static function.
+       (gnat_to_gnu_entity) <object>: Set DECL_CONST_ADDRESS_P according to
+       the return value of above function.
+       (gnat_to_gnu_entity) <E_Record_Type>: Force BLKmode for all types
+       passed by reference.
+       <E_Record_Subtype>: Likewise.
+       Set TREE_ADDRESSABLE on the type if it passed by reference.
+       (make_packable_type): Use SET_DECL_ORIGINAL_FIELD_TO_FIELD.
+       (create_field_decl_from): Likewise.
+       (substitute_in_type): Likewise.
+       (purpose_member_field): Use SAME_FIELD_P.
+       * gcc-interface/misc.c (must_pass_by_ref): Test TREE_ADDRESSABLE.
+       * gcc-interface/trans.c (lvalue_required_p): Add ADDRESS_OF_CONSTANT
+       parameter and adjust recursive calls.
+       <N_Explicit_Dereference>: New case.
+       <N_Object_Declaration>: Return 1 if the object is of a class-wide type.
+       Adjust calls to lvalue_required_p.  Do not return the initializer of a
+       DECL_CONST_ADDRESS_P constant if an lvalue is required for it.
+       (call_to_gnu): Delay issuing error message for a misaligned actual and
+       avoid the associated back-end assertion.  Test TREE_ADDRESSABLE.
+       (gnat_gimplify_expr) <ADDR_EXPR>: Handle non-static constructors.
+       * gcc-interface/utils.c (make_dummy_type): Set TREE_ADDRESSABLE if the
+       type is passed by reference.
+       (convert) <CONSTRUCTOR>: Convert in-place in more cases.
+       * gcc-interface/utils2.c (build_cond_expr): Drop TYPE_BY_REFERENCE_P.
+       (build_simple_component_ref): Use SAME_FIELD_P.
+
+2010-04-12  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (Identifier_to_gnu): Use boolean variable.
+       (call_to_gnu): Test gigi's flag TYPE_BY_REFERENCE_P instead of calling
+       front-end's predicate Is_By_Reference_Type.  Use consistent order and
+       remove ??? comment.  Use original conversion in all cases, if any.
+       * gcc-interface/utils.c (make_dummy_type): Minor tweak.
+       (convert): Use local copy in more cases.
+       <INDIRECT_REF>: Remove deactivated code.
+       (unchecked_convert): Use a couple of local copies.
+
+2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (lvalue_required_for_attribute_p): New static
+       function.
+       (lvalue_required_p) <N_Attribute_Reference>: Call it.
+       (gnat_to_gnu) <N_Selected_Component>: Prevent build_component_ref from
+       folding the result only if lvalue_required_for_attribute_p is true.
+       * gcc-interface/utils.c (maybe_unconstrained_array): Pass correctly
+       typed constant to build_component_ref.
+       (unchecked_convert): Likewise.
+       * gcc-interface/utils2.c (maybe_wrap_malloc): Likewise.
+       (build_allocator): Likewise.
+
+2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/utils2.c (build_cond_expr): Take the address and
+       dereference if the result type is passed by reference.
+
 2010-04-11  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/trans.c (Case_Statement_to_gnu): Bool-ify variable.