OSDN Git Service

* gcc-interface/gigi.h (standard_datatypes): Add ADT_parent_name_id.
[pf3gnuchains/gcc-fork.git] / gcc / ada / ChangeLog
index 84e7e85..b62b913 100644 (file)
@@ -1,3 +1,460 @@
+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
+       if the size is small enough.  Propagate the alignment if there is an
+       alignment clause on the original array type.
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>
+       Deal with under-aligned packed array types.  Copy the size onto the
+       justified modular type and don't lay it out again.  Likewise for the
+       padding type built for other under-aligned subtypes.
+       * gcc-interface/utils.c (finish_record_type): Do not set a default mode
+       on the type.
+
+2010-04-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Procedure>: Set default
+       alignment on the RETURN type built for the Copy-In Copy-Out mechanism.
+
+2010-04-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/trans.c (call_to_gnu): In the return-by-target-ptr case
+       do not set the result type if there is a specified target and do not
+       convert the result in any cases.
+       (protect_multiple_eval): Make direct SAVE_EXPR for CALL_EXPR.
+       (maybe_stabilize_reference) <COMPOUND_EXPR>: Merge with CALL_EXPR.
+
+2010-03-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/Makefile.in (SPARC/Solaris): Use sparcv8plus.
+
+2010-02-27  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/42253
+       * gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Assert that fat
+       pointer base types are variant of each other.  Apply special treatment
+       for null to fat pointer types in all cases.
+
+2010-01-28  Pascal Obry  <obry@adacore.com>
+
+       * s-win32.ads: Add some missing constants.
+
+2010-01-28  Vincent Celier  <celier@adacore.com>
+
+       * prj-attr-pm.adb (Add_Attribute): Do nothing if To_Package is
+       Unknown_Package.
+
+2010-01-28  Robert Dewar  <dewar@adacore.com>
+
+       * gnat_rm.texi: Minor correction
+
+2010-01-27  Pascal Obry  <obry@adacore.com>
+
+       * g-awk.adb: ensure that an AWK session is reusable.
+
+2010-01-27  Vasiliy Fofanov  <fofanov@adacore.com>
+
+       * g-regist.adb (For_Every_Key): Fix previous change.
+       Minor reformatting.
+
+2010-01-27  Thomas Quinot  <quinot@adacore.com>
+
+       * lib-writ.ads: Current version of spec for new N (note) ALI lines
+
+2010-01-27  Yannick Moy  <moy@adacore.com>
+
+       * a-cdlili.adb (Insert): Correct exception message when cursor
+       designates wrong list.
+
+2010-01-27  Vincent Celier  <celier@adacore.com>
+
+       * gnatcmd.adb: When there is only one main specified, the package
+       support Switches (<main>) and attribute Switches is specified for the
+       main, use these switches, instead of Default_Switches ("Ada").
+
+2010-01-27  Robert Dewar  <dewar@adacore.com>
+
+       * sem_prag.adb, par-prag.adb, snames.ads-tmpl: pragma Dimension initial
+       implementation.
+       * exp_disp.adb: Minor reformatting
+
+2010-01-27  Tristan Gingold  <gingold@adacore.com>
+
+       * seh_init.c: Use __ImageBase instead of _ImageBase.
+
+2010-01-27  Javier Miranda  <miranda@adacore.com>
+
+       * exp_disp.ads, exp_disp.adb (Expand_Interface_Thunk): Modify the
+       profile of interface thunks. The type of the controlling formal is now
+       the covered interface type (instead of the target tagged type).
+
+2010-01-27  Sergey Rybin  <rybin@adacore.com>
+
+       * gnat_rm.texi, gnat_ugn.texi: Update gnatcheck doc.
+
+2010-01-27  Robert Dewar  <dewar@adacore.com>
+
+       * sinput.ads, sinput.adb (Sloc_Range): Applies to all nodes, formal
+       changed from Expr to N.
+
+2010-01-26  Thomas Quinot  <quinot@adacore.com>
+
+       * gnat_ugn.texi: Adjust documentation of -gnatz switches.
+       * usage.adb: Replace line for -gnatz with two lines for -gnatzc and
+       -gnatzr.
+
+2010-01-26  Vincent Celier  <celier@adacore.com>
+
+       * prj-attr.adb: Add new attribute Library_Install_Name_Option
+       Replace attribute Run_Path_Origin_Supported with Run_Path_Origin
+       * prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process
+       attributes Run_Path_Option and Library_Install_Name_Option.
+       * prj.ads (Project_Configuration): Replace component
+       Run_Path_Origin_Supported with component Run_Path_Origin. Add new
+       component Library_Install_Name_Option.
+       * snames.ads-tmpl: Add new standard name Library_Install_Name_Option
+       Replace Run_Path_Origin_Supported with Run_Path_Origin
+
+2010-01-26  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch8.adb (Use_One_Package): Within an instance, an actual package
+       is not hidden by a homograph declared in another actual package.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.adb (Traverse_Declarations_Or_Statements): Only generate
+       decisions for pragmas Assert, Check, Precondition, Postcondition if
+       -gnata set.
+       * scos.ads: Update comments.
+       * get_scos.adb, put_scos.adb: Minor fix to code reading statement SCOs.
+       Also remove obsolete code for CT (exit point) SCOs.
+
+2010-01-26  Thomas Quinot  <quinot@adacore.com>
+
+       * switch-c.adb: Fix handling of -gnatz*
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.adb (Traverse_Declarations_Or_Statements): Separate F/W
+       qualifiers for FOR/WHILE loops
+       * scos.ads: Use separate type letters F/W for for/while loops
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * get_scos.adb (Get_SCOs): Implement new form of CS entries (multiple
+       entries per line, one for each statement in the sequence).
+       * par_sco.adb (Traverse_Declarations_Or_Statements): Increase array
+       size from 100 to 10_000 for SC_Array to avoid any real possibility of
+       overflow. Output decisions in for loops.
+       Exclude labels from CS lines.
+       * scos.ads: Clarify that label is not included in the entry point
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.adb (Traverse_Declarations_Or_Statments): Implement new
+       format of statement sequence SCO entries (one location/statement).
+       * put_scos.adb (Put_SCOs): Implement new format of CS lines
+       * scos.ads: Update comments.
+       * sem_eval.adb: Minor reformatting.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.ads, par_sco.adb (Set_Statement_Entry): New handling of exits
+       (Extend_Statement_Sequence): New procedures
+       (Traverse_Declarations_Or_Statements): New handling for exits.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.adb (Traverse_Declarations_Or_Statements): Add processing for
+       Case.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
+       * scos.ads: Clarify handling of logical operators
+
+2010-01-26  Arnaud Charlet  <charlet@adacore.com>
+
+       * s-tpoben.adb: Update comments.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * freeze.adb (Set_Small_Size): Don't set size if alignment clause
+       present.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * scos.ads: Clean up documentation, remove obsolete XOR references
+2010-01-26  Vincent Celier  <celier@adacore.com>
+
+       * gnat_ugn.texi: Complete documentation on the restrictions for
+       combined options in -gnatxxx switches.
+       Fix typo.
+
+2010-01-26  Arnaud Charlet  <charlet@adacore.com>
+
+       * s-tpoben.adb (Initialize_Protection_Entries): If a PO is created from
+       a controlled operation, abort is already deferred at this point, so we
+       need to use Defer_Abort_Nestable.
+
+2010-01-26  Vincent Celier  <celier@adacore.com>
+
+       * prj-conf.adb (Get_Config_Switches): Check for a default language for
+       a project extending a project with no languages.
+
+2010-01-26  Vincent Celier  <celier@adacore.com>
+
+       * switch-c.adb (Scan_Front_End_Switches): Take into account options
+       that follow -gnatef.
+       Allow -gnateG to be followed by other options.
+
+2010-01-26  Robert Dewar  <dewar@adacore.com>
+
+       * s-commun.ads, s-osprim-mingw.adb, s-stchop-vxworks.adb, sem_aggr.adb,
+       s-vxwext.adb, sem_ch10.adb, sem_eval.adb, sem_prag.adb: Minor
+       reformatting.
+
+2010-01-26  Vasiliy Fofanov  <fofanov@adacore.com>
+
+       * g-regist.adb, g-regist.ads (For_Every_Key): New generic procedure
+       that allows to iterate over all subkeys of a key.
+
+2010-01-26  Ed Falis  <falis@adacore.com>
+
+       * sysdep.c: enable NFS for VxWorks MILS
+       * env.c: enable __gnat_environ for VxWorks MILS
+       * gcc-interface/Makefile.in: Add VxWorks MILS target pairs.
+
+2010-01-25  Bob Duff  <duff@adacore.com>
+
+       * sem_aggr.adb (Resolve_Array_Aggregate): Check for the case where this
+       is an internally-generated positional aggregate, and the bounds are
+       already correctly set. We don't want to overwrite those bounds with
+       bounds determined by context.
+
+2010-01-25  Robert Dewar  <dewar@adacore.com>
+
+       * g-sercom.ads, gnatcmd.adb, gnatlink.adb, a-ststio.adb, exp_ch6.adb,
+       exp_ch9.adb, g-sechas.ads: Minor reformatting.
+
+2010-01-25  Thomas Quinot  <quinot@adacore.com>
+
+       * s-commun.adb (Last_Index): Count must be converted to SEO (a signed
+       integer type) before subtracting 1, otherwise the computation may wrap
+       (because size_t is modular) and cause the conversion to fail.
+
+2010-01-25  Ed Falis  <falis@adacore.com>
+
+       * sysdep.c, init.c: Adapt to support full run-time on VxWorks MILS.
+
+2010-01-25  Vincent Celier  <celier@adacore.com>
+
+       * prj-attr.adb: New attribute Run_Path_Origin_Required
+       * prj-nmsc.adb (Process_Project_Level_Simple_Attributes): Process new
+       attribute Run_Path_Origin_Required.
+       * prj.ads (Project_Configuration): New component
+       Run_Path_Origin_Supported.
+       * snames.ads-tmpl: New standard name Run_Path_Origin_Required
+
+2010-01-25  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_aggr.adb (Resolve_Array_Aggregate): If the bounds in a choice
+       have errors, do not continue resolution of the aggregate.
+       * sem_eval.adb (Eval_Indexed_Component): Do not attempt to evaluate if
+       the array type indicates an error.
+
+2010-01-25  Bob Duff  <duff@adacore.com>
+
+       * sinfo.ads: Minor comment fixes.
+
 2010-01-25  Bob Duff  <duff@adacore.com>
 
        * exp_ch4.adb, exp_aggr.adb: Minor comment fixes and code clean up.