-2010-04-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (make_type_from_size) <INTEGER_TYPE>: Just copy
- TYPE_NAME.
- * gcc-interface/trans.c (smaller_packable_type_p): Rename into...
- (smaller_form_type_p): ...this. Change parameter and variable names.
- (call_to_gnu): Use the nominal type of the parameter to create the
- temporary if it's a smaller form of the actual type.
- (addressable_p): Return false if the actual type is integral and its
- size is greater than that of the expected type.
-
-2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/cuintp.c (UI_To_gnu): Fix long line.
- * 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.
-
-2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gigi): Set DECL_IGNORED_P on EH functions.
- (gnat_to_gnu) <N_Op_Eq>: Restore the value of input_location
- before translating the top-level node.
- (lvalue_required_p) <N_Function_Call>: Return 1 if !constant.
- <N_Object_Declaration>: Likewise.
- <N_Assignment_Statement>: Likewise.
- <N_Unchecked_Type_Conversion>: Likewise.
- (call_to_gnu): Remove kludge.
- (gnat_to_gnu) <N_Return_Statement>: When not optimizing, force labels
- associated with user returns to be preserved.
- (gnat_to_gnu): Add special code to deal with boolean rvalues.
- * gcc-interface/utils2.c (compare_arrays): Set input_location on all
- comparisons.
- (build_unary_op) <ADDR_EXPR>: Call build_fold_addr_expr.
- <INDIRECT_REF>: Call build_fold_indirect_ref.
-
-2010-04-15 Joel Sherrill <joel.sherrill@oarcorp.com>
-
- * g-socket.adb: A target can have multiple missing errno's. This
- will result in multiple errno's being defined as -1. Because of this
- we can not use a case but must use a series of if's to avoid
- a duplicate case error in GNAT.Sockets.Resolve_Error.
-
-2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (call_to_gnu): Open a nesting level if this is
- a statement. Otherwise, if at top-level, push the processing of the
- elaboration routine. In the misaligned case, issue the error messages
- again on entry and create the temporary explicitly. Do not issue them
- for CONSTRUCTORs.
- For a function call, emit the range check if necessary.
- In the copy-in copy-out case, create the temporary for the return
- value explicitly.
- Do not unnecessarily convert by-ref parameters to the formal's type.
- Remove obsolete guards in conditions.
- (gnat_to_gnu) <N_Assignment_Statement>: For a function call, pass the
- target to call_to_gnu in all cases.
- (gnat_gimplify_expr) <ADDR_EXPR>: Remove handling of SAVE_EXPR.
- (addressable_p) <CONSTRUCTOR>: Return false if not static.
- <COMPOUND_EXPR>: New case.
- * gcc-interface/utils2.c (build_unary_op) <ADDR_EXPR>: Fold a compound
- expression if it has unconstrained array type.
- (gnat_mark_addressable) <COMPOUND_EXPR>: New case.
- (gnat_stabilize_reference) <COMPOUND_EXPR>: Stabilize operands on an
- individual basis.
-
-2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gigi): Do not start statement group.
- (Compilation_Unit_to_gnu): Set current_function_decl to NULL.
- Start statement group and push binding level here...
- (gnat_to_gnu) <N_Compilation_Unit>: ...and not here.
- Do not push fake contexts at top level. Remove redundant code.
- (call_to_gnu): Rename a local variable and constify another.
- * gcc-interface/utils.c (gnat_pushlevel): Fix formatting nits.
- (set_current_block_context): Set it as the group's block.
- (gnat_init_decl_processing): Delete unrelated init code.
- (end_subprog_body): Use NULL_TREE.
-
-2010-04-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (call_to_gnu): Do not unnecessarily force
- side-effects of actual parameters before the call.
-
-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 Joel Sherrill <joel.sherrill@oarcorp.com>
-
- * gsocket.h: Run-time can no longer be built without network
- OS headers available. Changing RTEMS GNAT build procedure to
- reflect this and letting run-time build use network .h files.
-
-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.
- * 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