Thomas Koenig [Mon, 9 Aug 2010 19:34:49 +0000 (19:34 +0000)]
re PR fortran/44235 (array temporary with high upper bound)
2010-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/44235
* array.c (gfc_ref_dimen_size): Add end argument.
If end is non-NULL, calculate it.
(ref_size): Adjust call to gfc_ref_dimen_size.
(gfc_array_dimen_size): Likewise.
(gfc_array_res_shape): Likewise.
* gfortran.h: Adjust prototype for gfc_ref_dimen_size.
* resolve.c (resolve_array_ref): For stride not equal to -1,
fill in the lowest possible end.
2010-08-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/44235
* gfortran.dg/dependency_32.f90: New test.
Bingfeng Mei [Mon, 9 Aug 2010 14:44:03 +0000 (14:44 +0000)]
ddg.c (walk_mems_2): Moved from alias.c, use may_alias_p instead of alias_sets_conflict_p.
2010-08-09 Bingfeng Mei <bmei@broadcom.com>
* ddg.c (walk_mems_2): Moved from alias.c, use may_alias_p instead of
alias_sets_conflict_p.
(walk_mems_1): Moved from alias.c.
(insns_may_alias_p): New function, originally insn_alias_sets_conflict_p
in alias.c.
(add_inter_loop_mem_dep): Use insns_may_alias_p now.
* cse.c (cse_insn): New argument in calling nonoverlapping_memrefs_p.
* alias.c (walk_mems_2): Moved to ddg.c.
(walk_mems_1): Ditto.
(insn_alias_sets_conflict_p): Renamed to insns_may_alias_p and moved
to ddg.c.
(nonoverlapping_memrefs_p): Add flag to guard offset-based memory
disambiguation.
*(may_alias_p): New function to check whether two memory expression
may alias or not. Currently used in buidling inter-iteration memory
dependence.
*alias.h (nonoverlapping_memrefs_p): New flag as third argument.
(insn_alias_sets_conflict_p): Removed
*rtl.h (may_alias_p): New function prototype.
Nathan Froyd [Mon, 9 Aug 2010 01:06:34 +0000 (01:06 +0000)]
utils.c (make_descriptor_field): Add tree parameter.
* gcc-interface/utils.c (make_descriptor_field): Add tree parameter.
(build_vms_descriptor32): Adjust calls to it for new parameter.
(build_vms_descriptor): Likewise.
Nathan Froyd [Mon, 9 Aug 2010 00:53:48 +0000 (00:53 +0000)]
* gcc-interface/decl.c (rec_variant). Declare. Declare a VEC of it.
(build_variant_list): Return a VEC instead of a tree. Take a
VEC instead of a tree.
(create_variant_part_from): Take a VEC instead of a tree for
variant_list. Adjust accordingly.
(gnat_to_gnu_entity): Adjust for changes to previous functions.
Nathan Froyd [Sun, 8 Aug 2010 17:42:40 +0000 (17:42 +0000)]
c-tree.h (c_arg_tag): Define.
* c-tree.h (c_arg_tag): Define. Define a VEC containing it.
(struct c_arg_info): Change type of tags field.
* c-decl.c (grokdeclarator): Update for changed type of tags field.
(get_parm_info): Likewise.
(store_parm_decls_newstyle): Likewise.
Nathan Froyd [Sun, 8 Aug 2010 17:41:10 +0000 (17:41 +0000)]
c-pragma.c (pending_redefinition): Declare.
* c-pragma.c (pending_redefinition): Declare. Declare a VEC of it.
(pending_redefine_extname): Change type to a VEC.
(add_to_renaming_pragma_list): Update for new type of
pending_redefine_extname.
(maybe_apply_pending_pragma): Likewise.
re PR boehm-gc/34544 (pthread_default_stacksize_np failed.)
PR boehm-gc/34544
* gthr-posix.h (__gthread_start): Delete.
(__gthread_active_init): Use pthread_default_stacksize_np instead of
pthread_create to determine if hpux pthreads are active.
* gthr-posix95.h (__gthread_start): Delete.
(__gthread_active_init): Likewise use pthread_default_stacksize_np.
Nathan Froyd [Sun, 8 Aug 2010 02:16:06 +0000 (02:16 +0000)]
parser.c (cp_default_arg_entry): Declare.
* parser.c (cp_default_arg_entry): Declare. Declare a VEC of it.
(cp_unparsed_functions_entry): Declare. Declare a VEC of it.
(cp_parser) [unparsed_functions_queues]: Rename to unparsed_queues.
Change type to a VEC.
(unparsed_funs_with_default_args): Define.
(unparsed_funs_with_definitions): Define.
(push_unparsed_function_queues): New function.
(cp_parser_new): Call it.
(pop_unparsed_function_queues): New function.
(cp_parser_class_specifier): Adjust processing of unparsed functions.
(cp_parser_template_declaration_after_export): Use VEC_safe_push.
(cp_parser_save_member_function_body): Likewise.
(cp_parser_late_parsing_for_member): Call push_unparsed_function_queues
and pop_unparsed_function_queues.
(cp_parser_late_parsing_default_args): Likewise.
(cp_parser_save_default_args): Use VEC_safe_push.
Nathan Froyd [Sun, 8 Aug 2010 02:14:07 +0000 (02:14 +0000)]
name-lookup.h (cp_label_binding): Declare.
* name-lookup.h (cp_label_binding): Declare. Declare a VEC type
containing it.
(cp_binding_level): Convert shadowed_labels and dead_vars_from_for
fields to VECs.
* decl.c (poplevel): Adjust for type changes.
(declare_local_label): Likewise.
Jerry DeLisle [Sat, 7 Aug 2010 12:03:23 +0000 (12:03 +0000)]
re PR fortran/45143 ([F2008,corrig1] Endless loop with unlimited edit descriptor)
2010-08-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/45143
* io/format.c: Remove fnode storage structure definitions, moving these
to format.h. (parse_format_list): Add check for data descriptors,
taking care of nested formats. Adjust calling parameters to pass a
check flag. (parse_format): Likewise.
* io/format.h: Add structures moved from format.c.
Nathan Froyd [Sat, 7 Aug 2010 04:26:26 +0000 (04:26 +0000)]
decl.c (subst_pair): Declare.
* gcc-interface/decl.c (subst_pair): Declare. Declare a VEC of it.
(build_subst_list): Return a VEC instead of a tree.
(build_variant_list): Take a VEC for subst_list. Adjust
accordingly.
(create_field_decl_from): Likewise.
(create_variant_part_from): Likewise.
(copy_and_substitute_in_size): Likewise.
(gnat_to_gnu_entity): Adjust for new interface to build_subst_list.
Free the built vector.
Thomas Koenig [Fri, 6 Aug 2010 22:33:37 +0000 (22:33 +0000)]
re PR fortran/45159 (Unnecessary temporaries)
2010-08-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/45159
* dependency.c (check_section_vs_section): Handle cases where
the start expression coincides with the lower or upper
bound of the array.
2010-08-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/45159
* gfortran.dg/dependency_31.f90: New test.
Paolo Carlini [Fri, 6 Aug 2010 14:46:08 +0000 (14:46 +0000)]
tuple (pack_arguments): Rename to forward_as_tuple and simplify, per US 98 and US 99.
2010-08-06 Paolo Carlini <paolo.carlini@oracle.com>
* include/std/tuple (pack_arguments): Rename to forward_as_tuple
and simplify, per US 98 and US 99.
* testsuite/20_util/tuple/creation_functions/pack_arguments.cc:
Rename to...
* testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc:
... this, adjust.
* testsuite/20_util/pair/piecewise.cc: Adjust.
Bernd Schmidt [Thu, 5 Aug 2010 22:58:35 +0000 (22:58 +0000)]
From Martin Thuresson <martint@google.com>
* postreload.c (reload_cse_simplify_operands): Use
SET_REGNO_RAW instead of SET_REGNO.
* caller-save.c (reg_save_code): Use SET_REGNO_RAW instead of
SET_REGNO.
* ira.c (setup_prohibited_mode_move_regs): Use SET_REGNO_RAW
instead of SET_REGNO.
* rtl.h (SET_REGNO_RAW): New macro.
Martin Jambor [Thu, 5 Aug 2010 13:30:14 +0000 (15:30 +0200)]
ipa-cp.c (ipcp_discover_new_direct_edges): New function.
2010-08-05 Martin Jambor <mjambor@suse.cz>
* ipa-cp.c (ipcp_discover_new_direct_edges): New function.
(ipcp_insert_stage): Redirect only edges not flagged with
indirect_inlining_edge. Call ipcp_discover_new_direct_edges for all
discovered constants.
* testsuite/gcc.dg/ipa/ipcp-ii-1.c: New test.
* testsuite/g++.dg/ipa/ipcp-ivi-1.C: Likewise.
* ipa-prop.h (enum ipa_lattice_type): Changed comments.
(struct ipa_param_descriptor): New fields types and
cannot_devirtualize.
(ipa_param_cannot_devirtualize_p): New function.
(ipa_param_types_vec_empty): Likewise.
(ipa_make_edge_direct_to_target): Declare.
* ipa-cp.c: Fixed first stage driver name in initial comment,
described devirtualization there too.
(ipcp_analyze_node): Call ipa_analyze_params_uses.
(ipcp_print_all_lattices): Print devirtualization info.
(ipa_set_param_cannot_devirtualize): New function.
(ipcp_initialize_node_lattices): Set cannot_devirtualize when setting
lattice to BOTTOM.
(ipcp_init_stage): Merged into...
(ipcp_generate_summary): ...its caller.
(ipcp_change_tops_to_bottom): Also process type lists.
(ipcp_add_param_type): New function.
(ipcp_copy_types): Likewise.
(ipcp_propagate_types): Likewise.
(ipcp_propagate_stage): Also propagate types.
(ipcp_need_redirect_p): Variable jump_func moved to its scope block.
Also return true if propagated types require it.
(ipcp_update_callgraph): Dump redirection info.
(ipcp_process_devirtualization_opportunities): New function.
(ipcp_const_param_count): Include known type information.
(ipcp_insert_stage): Call ipcp_process_devirtualization_opportunities
on new node. Fixed formatting.
* ipa-prop.c (make_edge_direct_to_target): Renamed to
ipa_make_edge_direct_to_target and changed all callers. Made
externally visible.
(ipa_node_duplication_hook): Duplicate types vector.
* cgraphunit.c (cgraph_redirect_edge_call_stmt_to_callee): Also try to
redirect outgoing calls for which we can't get a decl from the
statement. Check that we can get a decl from the call statement.
* ipa-inline.c (inline_indirect_intraprocedural_analysis): Call
ipa_analyze_params_uses only when ipa-cp is disabled.
* tree-inline.c (get_indirect_callee_fndecl): Removed.
(expand_call_inline): Do not call get_indirect_callee_fndecl.
* params.def (PARAM_DEVIRT_TYPE_LIST_SIZE): New parameter.
* Makefile.in (ipa-cp.o): Add gimple.h to dependencies.
Uros Bizjak [Thu, 5 Aug 2010 12:03:36 +0000 (14:03 +0200)]
expmed.c (expand_mult_const): Expand shift into temporary.
* expmed.c (expand_mult_const) <case alg_shift>: Expand shift into
temporary. Emit move from temporary to accum, so REG_EQUAL note will
be attached to this insn in correct mode.
Arnaud Charlet [Thu, 5 Aug 2010 09:26:47 +0000 (11:26 +0200)]
[multiple changes]
2010-08-05 Robert Dewar <dewar@adacore.com>
* gnat1drv.adb: Minor reformatting.
2010-08-05 Ed Schonberg <schonberg@adacore.com>
* sem.adb (Do_Unit_And_Dependents): If some parent unit is an
instantiation, process its body before the spec of the main unit,
because it may contain subprograms invoked in the spec of main.
* einfo.ads: Add documention of delayed freeze.
2010-08-05 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Process_Linker): Take into account new values for
attribute Response_File_Format.
* prj.ads (Response_File_Format): New enumeration values GCC_GNU,
GCC_Object_List and GCC_Option_List.
2010-08-05 Ed Schonberg <schonberg@adacore.com>
* exp_ch4.adb (Expand_N_Selected_Component): Do not constant-fold a
selected component that denotes a discriminant if it is the
discriminant of a component of an unconstrained record type.
Arnaud Charlet [Thu, 5 Aug 2010 09:18:41 +0000 (11:18 +0200)]
[multiple changes]
2010-08-05 Thomas Quinot <quinot@adacore.com>
* exp_ch4.adb: Minor reformatting
* gnat1drv.adb: Minor reformatting.
Minor code reorganization (use Nkind_In).
2010-08-05 Ed Schonberg <schonberg@adacore.com>
* exp_util.ads, exp_util.adb (Needs_Constant_Address): New predicate to
determine whether the expression in an address clause for an
initialized object must be constant. Code moved from freeze.adb.
(Remove_Side_Effects): When the temporary is initialized with a
reference, indicate that the temporary is a constant as done in all
other cases.
* freeze.adb (Check_Address_Clause): use Needs_Constant_Address.
* exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case 'Address):
If object does not need a constant address, remove side effects from
address expression, so it is elaborated at the point of the address
clause and not at the freeze point of the object, so that elaboration
order is respected.
2010-08-05 Vincent Celier <celier@adacore.com>
* prj.adb (Is_Compilable): Return False for header files of non Ada
languages.
2010-08-05 Emmanuel Briot <briot@adacore.com>
* prj-nmsc.adb: The Missing_Source_Files flag also considers a missing
exec directory as a warning rather than an error.
Arnaud Charlet [Thu, 5 Aug 2010 09:14:19 +0000 (11:14 +0200)]
[multiple changes]
2010-08-05 Thomas Quinot <quinot@adacore.com>
* sem_ch6.adb, gnat1drv.adb, exp_ch6.adb, sem_eval.adb: Minor
reformatting.
2010-08-05 Steve Baird <baird@adacore.com>
* exp_util.adb (Remove_Side_Effects): An access value which designates
a volatile object of a nonvolatile type is prohibited.
Do not call Make_Reference to construct a reference to such an object.
Arnaud Charlet [Thu, 5 Aug 2010 09:08:50 +0000 (11:08 +0200)]
[multiple changes]
2010-08-05 Robert Dewar <dewar@adacore.com>
* a-suezse.adb, a-suezse.ads, a-suezen.adb, a-suezen.ads: Removed.
* a-suewse.adb, a-suewse.ads, a-suesen.adb, a-suesen.ads,
a-suewen.adb, a-suewen.ads: New files.
* Makefile.rtl, impunit.adb: Update implementation of Ada 2012 string
encoding packages.
* sem_elab.adb: Minor reformatting.
2010-08-05 Arnaud Charlet <charlet@adacore.com>
* sem_ch8.adb (Use_One_Type): Protect against empty scopes.
* exp_util.adb (Component_May_Be_Bit_Aligned): Prevent assert failure
in case of null Comp.
Gary Dismukes [Thu, 5 Aug 2010 08:55:34 +0000 (08:55 +0000)]
sem_ch4.adb (Analyze_Allocator): Flag errors on allocators of a nested access type whose designated type has...
2010-08-05 Gary Dismukes <dismukes@adacore.com>
* sem_ch4.adb (Analyze_Allocator): Flag errors on allocators of a
nested access type whose designated type has tasks or is a protected
object when the restrictions No_Task_Hierarchy or
No_Local_Protected_Objects apply. Add ??? comment.
* sem_ch9.adb (Analyze_Protected_Type): Give a warning when a protected
type is not a library-level type and No_Local_Protected_Objects applies.
(Analyze_Task_Type): Give a warning when a task type is not a
library-level type and No_Task_Hierarchy applies.
Force the use of stack_pointer_offset in computing the frame size.
By exporting padding[012] and to_allocate from ix86_compute_frame_layout,
we encouraged re-computation of the size of the local frame. All of the
truly relevant offsets are now exported directly, and should be compared
against directly.
Describe unwinding for realigned frames explicitly.
We had been relying on some extremely fragile code within
dwarf2out in order to guess what to do with aligned stack
frames, which broke when we decided to perform the stores
to the aligned stack frame via EBP instead of ESP.
Instead, emit the appropriate unwinding instructions from
the backend. This requires adding a new reg-note in order
to describe a register save at an arbitrary address.