+2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (validate_size): Reorder, remove obsolete test
+ and warning.
+ (set_rm_size): Reorder and remove obsolete test.
+
+2010-04-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h: Reorder declarations and tweak comments.
+ (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.
+
+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.
+ (gnat_to_gnu) <N_Null_Statement>: When not optimizing, generate a
+ goto to the next statement.
+
+2010-04-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h (maybe_variable): Delete.
+ (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.
+
2010-04-09 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/gigi.h (gnat_mark_addressable): Rename parameter.