1. 27 Apr, 2016 40 commits
    • sem_aux.adb (Is_By_Reference_Type): Also return true for a tagged incomplete… · 1e55d29a
      sem_aux.adb (Is_By_Reference_Type): Also return true for a tagged incomplete type without full view.
      
      	* sem_aux.adb (Is_By_Reference_Type): Also return true for a tagged
      	incomplete type without full view.
      	* sem_ch6.adb (Exchange_Limited_Views): Change into a function and
      	return the list of changes.
      	(Restore_Limited_Views): New procedure to undo the transformation made
      	by Exchange_Limited_Views.
      	(Analyze_Subprogram_Body_Helper): Adjust call to Exchange_Limited_Views
      	and call Restore_Limited_Views at the end, if need be.
      	(Possible_Freeze): Do not delay freezing because of incomplete types.
      	(Process_Formals): Remove kludges for class-wide types.
      	* types.h (By_Copy_Return): Delete.
      	* gcc-interface/ada-tree.h (TYPE_MAX_ALIGN): Move around.
      	(TYPE_DUMMY_IN_PROFILE_P): New macro.
      	* gcc-interface/gigi.h (update_profiles_with): Declare.
      	(finish_subprog_decl): Likewise.
      	(get_minimal_subprog_decl): Delete.
      	(create_subprog_type): Likewise.
      	(create_param_decl): Adjust prototype.
      	(create_subprog_decl): Likewise.
      	* gcc-interface/decl.c (defer_limited_with): Rename into...
      	(defer_limited_with_list): ...this.
      	(gnat_to_gnu_entity): Adjust to above renaming.
      	(finalize_from_limited_with): Likewise.
      	(tree_entity_vec_map): New structure.
      	(gt_pch_nx): New helpers.
      	(dummy_to_subprog_map): New hash table.
      	(gnat_to_gnu_param): Set the SLOC here.  Remove MECH parameter and
      	add FIRST parameter.  Deal with the mechanism here instead of...
      	Do not make read-only variant of types.  Simplify expressions.
      	In the by-ref case, test the mechanism before must_pass_by_ref
      	and also TYPE_IS_BY_REFERENCE_P before building the reference type.
      	(gnat_to_gnu_subprog_type): New static function extracted from...
      	Do not special-case the type_annotate_only mode.  Call
      	gnat_to_gnu_profile_type instead of gnat_to_gnu_type on return type.
      	Deal with dummy return types.  Likewise for parameter types.  Deal
      	with by-reference types explicitly and add a kludge for null procedures
      	with untagged incomplete types.  Remove assertion on the types and be
      	prepared for multiple elaboration of the declarations.  Skip the whole
      	CICO processing if the profile is incomplete.  Handle the completion of
      	a previously incomplete profile.
      	(gnat_to_gnu_entity) <E_Variable>: Rename local variable.
      	Adjust couple of calls to create_param_decl.
      	<E_Access_Subprogram_Type, E_Anonymous_Access_Subprogram_Type>:
      	Remove specific deferring code.
      	<E_Access_Type>: Also deal with E_Subprogram_Type designated type.
      	Simplify handling of dummy types and remove obsolete comment.
      	Constify a couple of variables.  Do not set TYPE_UNIVERSAL_ALIASING_P
      	on dummy types.
      	<E_Access_Subtype>: Tweak comment and simplify condition.
      	<E_Subprogram_Type>: ...here.  Call it and clean up handling.  Remove
      	obsolete comment and adjust call to gnat_to_gnu_param.  Adjust call to
      	create_subprog_decl.
      	<E_Incomplete_Type>: Add a couple of 'const' qualifiers and get rid of
      	inner break statements.  Tidy up condition guarding direct use of the
      	full view.
      	(get_minimal_subprog_decl): Delete.
      	(finalize_from_limited_with): Call update_profiles_with on dummy types
      	with TYPE_DUMMY_IN_PROFILE_P set.
      	(is_from_limited_with_of_main): Delete.
      	(associate_subprog_with_dummy_type): New function.
      	(update_profile): Likewise.
      	(update_profiles_with): Likewise.
      	(gnat_to_gnu_profile_type): Likewise.
      	(init_gnat_decl): Initialize dummy_to_subprog_map.
      	(destroy_gnat_decl): Destroy dummy_to_subprog_map.
      	* gcc-interface/misc.c (gnat_get_alias_set): Add guard for accessing
      	TYPE_UNIVERSAL_ALIASING_P.
      	(gnat_get_array_descr_info): Minor tweak.
      	* gcc-interface/trans.c (gigi): Adjust calls to create_subprog_decl.
      	(build_raise_check): Likewise.
      	(Compilation_Unit_to_gnu): Likewise.
      	(Identifier_to_gnu): Accept mismatches coming from a limited context.
      	(Attribute_to_gnu): Remove kludge for dispatch table entities.
      	(process_freeze_entity): Do not retrieve old definition if there is an
      	address clause on the entity.  Call update_profiles_with on dummy types
      	with TYPE_DUMMY_IN_PROFILE_P set.
      	* gcc-interface/utils.c (build_dummy_unc_pointer_types): Also set
      	TYPE_REFERENCE_TO to the fat pointer type.
      	(create_subprog_type): Delete.
      	(create_param_decl): Remove READONLY parameter.
      	(finish_subprog_decl): New function extracted from...
      	(create_subprog_decl): ...here.  Call it.  Remove CONST_FLAG and
      	VOLATILE_FLAG parameters and adjust.
      	(update_pointer_to): Also clear TYPE_REFERENCE_TO in the unconstrained
      	case.
      
      From-SVN: r235521
      Eric Botcazou committed
    • Fix comment in rtl.def · e306693a
      Commit r210360 removed the first "i" field from the various instruction
      nodes in rtx.def, moving it to an explicit "int insn_uid;" field
      of the union "u2" within rtx_def.
      
      Update the comment in rtl.def to reflect this change.  Also, fix
      a stray apostrophe.
      
      gcc/ChangeLog:
      	* rtl.def: Update comment for "things in the instruction chain" to
      	reflect the removal of the leading "i" field for INSN_UID in
      	r210360.  Fix bogus apostrophe.
      
      From-SVN: r235520
      David Malcolm committed
    • i386.md (lea arith with mem operand + setcc peephole2): Set operator mode. · 3d2795a0
      	* config/i386/i386.md
      	(lea arith with mem operand + setcc peephole2): Set operator mode.
      
      From-SVN: r235519
      Uros Bizjak committed
    • Extend STV pass to 64-bit mode · 087146ca
      128-bit SSE load and store instructions can be used for load and store
      of 128-bit integers if they are the only operations on 128-bit integers.
      To convert load and store of 128-bit integers to 128-bit SSE load and
      store, the original STV pass, which is designed to convert 64-bit integer
      operations to SSE2 operations in 32-bit mode, is extended to 64-bit mode
      in the following ways:
      
      1. Class scalar_chain is turned into base class.  The 32-bit specific
      member functions are moved to the new derived class, dimode_scalar_chain.
      The new derived class, timode_scalar_chain, is added to convert oad and
      store of 128-bit integers to 128-bit SSE load and store.
      2. Add the 64-bit version of scalar_to_vector_candidate_p and
      remove_non_convertible_regs.  Only TImode load and store are allowed
      for conversion.  If one instruction on the chain of dependent
      instructions aren't TImode load or store, the chain of instructions
      won't be converted.
      3. In 64-bit, we only convert from TImode to V1TImode, which have the
      same size.  The difference is only vector registers are allowed in
      TImode so that 128-bit SSE load and store instructions will be used
      for load and store of 128-bit integers.
      4. Put the 64-bit STV pass before the CSE pass so that instructions
      changed or generated by the STV pass can be CSEed.
      
      convert_scalars_to_vector calls free_dominance_info in 64-bit mode to
      work around ICE in fwprop pass:
      
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70807
      
      when building libgcc on Linux/x86-64.
      
      gcc/
      
      	PR target/70155
      	* config/i386/i386.c (scalar_to_vector_candidate_p): Renamed
      	to ...
      	(dimode_scalar_to_vector_candidate_p): This.
      	(timode_scalar_to_vector_candidate_p): New function.
      	(scalar_to_vector_candidate_p): Likewise.
      	(timode_check_non_convertible_regs): Likewise.
      	(timode_remove_non_convertible_regs): Likewise.
      	(remove_non_convertible_regs): Likewise.
      	(remove_non_convertible_regs): Renamed to ...
      	(dimode_remove_non_convertible_regs): This.
      	(scalar_chain::~scalar_chain): Make it virtual.
      	(scalar_chain::compute_convert_gain): Make it pure virtual.
      	(scalar_chain::mark_dual_mode_def): Likewise.
      	(scalar_chain::convert_insn): Likewise.
      	(scalar_chain::convert_registers): Likewise.
      	(scalar_chain::add_to_queue): Make it protected.
      	(scalar_chain::emit_conversion_insns): Likewise.
      	(scalar_chain::replace_with_subreg): Likewise.
      	(scalar_chain::replace_with_subreg_in_insn): Likewise.
      	(scalar_chain::convert_op): Likewise.
      	(scalar_chain::convert_reg): Likewise.
      	(scalar_chain::make_vector_copies): Likewise.
      	(scalar_chain::convert_registers): New pure virtual function.
      	(class dimode_scalar_chain): New class.
      	(class timode_scalar_chain): Likewise.
      	(scalar_chain::mark_dual_mode_def): Renamed to ...
      	(dimode_scalar_chain::mark_dual_mode_def): This.
      	(timode_scalar_chain::mark_dual_mode_def): New function.
      	(timode_scalar_chain::convert_insn): Likewise.
      	(dimode_scalar_chain::convert_registers): Likewise.
      	(scalar_chain::compute_convert_gain): Renamed to ...
      	(dimode_scalar_chain::compute_convert_gain): This.
      	(scalar_chain::replace_with_subreg): Renamed to ...
      	(dimode_scalar_chain::replace_with_subreg): This.
      	(scalar_chain::replace_with_subreg_in_insn): Renamed to ...
      	(dimode_scalar_chain::replace_with_subreg_in_insn): This.
      	(scalar_chain::make_vector_copies): Renamed to ...
      	(dimode_scalar_chain::make_vector_copies): This.
      	(scalar_chain::convert_reg): Renamed to ...
      	(dimode_scalar_chain::convert_reg ): This.
      	(scalar_chain::convert_op): Renamed to ...
      	(dimode_scalar_chain::convert_op): This.
      	(scalar_chain::convert_insn): Renamed to ...
      	(dimode_scalar_chain::convert_insn): This.
      	(scalar_chain::convert): Call convert_registers.
      	(convert_scalars_to_vector): Change to scalar_chain pointer to
      	use timode_scalar_chain in 64-bit mode and dimode_scalar_chain
      	in 32-bit mode.  Delete scalar_chain pointer.  Call
      	free_dominance_info in 64-bit mode.
      	(pass_stv::gate): Remove TARGET_64BIT check.
      	(ix86_option_override): Put the 64-bit STV pass before the CSE
      	pass.
      
      gcc/testsuite/
      
      	PR target/70155
      	* gcc.target/i386/pr55247-2.c: Updated to check movti_internal
      	and movv1ti_internal patterns
      	* gcc.target/i386/pr70155-1.c: New test.
      	* gcc.target/i386/pr70155-2.c: Likewise.
      	* gcc.target/i386/pr70155-3.c: Likewise.
      	* gcc.target/i386/pr70155-4.c: Likewise.
      	* gcc.target/i386/pr70155-5.c: Likewise.
      	* gcc.target/i386/pr70155-6.c: Likewise.
      	* gcc.target/i386/pr70155-7.c: Likewise.
      	* gcc.target/i386/pr70155-8.c: Likewise.
      	* gcc.target/i386/pr70155-9.c: Likewise.
      	* gcc.target/i386/pr70155-10.c: Likewise.
      	* gcc.target/i386/pr70155-11.c: Likewise.
      	* gcc.target/i386/pr70155-12.c: Likewise.
      	* gcc.target/i386/pr70155-13.c: Likewise.
      	* gcc.target/i386/pr70155-14.c: Likewise.
      	* gcc.target/i386/pr70155-15.c: Likewise.
      	* gcc.target/i386/pr70155-16.c: Likewise.
      	* gcc.target/i386/pr70155-17.c: Likewise.
      	* gcc.target/i386/pr70155-18.c: Likewise.
      	* gcc.target/i386/pr70155-19.c: Likewise.
      	* gcc.target/i386/pr70155-20.c: Likewise.
      	* gcc.target/i386/pr70155-21.c: Likewise.
      	* gcc.target/i386/pr70155-22.c: Likewise.
      
      From-SVN: r235518
      H.J. Lu committed
    • Replace ".{5}" with ".{5,6}" in avx512vl-vmovdqa64-1.c · 92329f9f
      	* gcc.target/i386/avx512vl-vmovdqa64-1.c: Replace ".{5}" with
      	".{5,6}".
      
      From-SVN: r235516
      H.J. Lu committed
    • DWARF: turn dw_loc_descr_node field into hash map for frame offset check · c027737f
      As discussed on
      <https://gcc.gnu.org/ml/gcc-patches/2016-02/msg01708.html>, this change
      removes a field in the dw_loc_descr_node structure so we can get rid of
      the CHECKING_P macro usage.
      
      This field was used to perform consistency checks for frame offset in
      DWARF procedures. As a replacement, this commit turns the "visited
      nodes" set in resolve_args_picking_1 into a map that remembers for each
      dw_loc_descr_node the frame offset associated to it, so that the
      consistency check is still operational.
      
      Boostrapped and regtested on x86_64-linux.
      
      2016-04-27  Pierre-Marie de Rodat  <derodat@adacore.com>
      
      	* dwarf2out.h (struct dw_loc_descr_node): Remove the
      	dw_loc_frame_offset field.
      	* dwarf2out.c (new_loc_descr): Likewise.
      	(resolve_args_picking_1): Turn the VISITED hash set into a
      	FRAME_OFFSET hash map. Use it to associate a frame offset to
      	visited nodes. Remove uses of the CHECKING_P macro.
      	(resolve_args_picking): Update call to resolve_args_picking_1.
      
      From-SVN: r235515
      Pierre-Marie de Rodat committed
    • tree-ssa-loop-ivopts.c (iv_ca_dump): Fix level of indentation. · 53f2382d
      	* tree-ssa-loop-ivopts.c (iv_ca_dump): Fix level of indentation.
      	(free_loop_data): Release vuses of groups.
      
      From-SVN: r235514
      Martin Liska committed
    • tree-ssa-loop-ivopts.c (struct iv): Use pointer to struct iv_use instead of… · 309a0cf6
      tree-ssa-loop-ivopts.c (struct iv): Use pointer to struct iv_use instead of redundant use_id and boolean have_use_for.
      
      	* tree-ssa-loop-ivopts.c (struct iv): Use pointer to struct iv_use
      	instead of redundant use_id and boolean have_use_for.
      	(struct iv_use): Change sub_id into group_id.  Remove field next.
      	Move fields: related_cands, n_map_members, cost_map and selected
      	to ...
      	(struct iv_group): ... here.  New structure.
      	(struct iv_common_cand): Use structure declaration directly.
      	(struct ivopts_data, iv_ca, iv_ca_delta): Rename fields.
      	(MAX_CONSIDERED_USES): Rename macro to ...
      	(MAX_CONSIDERED_GROUPS): ... here.
      	(n_iv_uses, iv_use, n_iv_cands, iv_cand): Delete.
      	(dump_iv, dump_use, dump_cand): Refactor format of dump information.
      	(dump_uses): Rename to ...
      	(dump_groups): ... here.  Update all uses.
      	(tree_ssa_iv_optimize_init, alloc_iv): Update all uses.
      	(find_induction_variables): Refactor format of dump information.
      	(record_sub_use): Delete.
      	(record_use): Update all uses.
      	(record_group): New function.
      	(record_group_use, find_interesting_uses_op): Call above functions.
      	Update all uses.
      	(find_interesting_uses_cond): Ditto.
      	(group_compare_offset): New function.
      	(split_all_small_groups): Rename to ...
      	(split_small_address_groups_p): ... here.  Update all uses.
      	(split_address_groups):  Update all uses.
      	(find_interesting_uses): Refactor format of dump information.
      	(add_candidate_1): Update all uses.  Remove redundant check on iv,
      	base and step.
      	(add_candidate, record_common_cand): Remove redundant assert.
      	(add_iv_candidate_for_biv): Update use.
      	(add_iv_candidate_derived_from_uses): Update all uses.
      	(add_iv_candidate_for_groups, record_important_candidates): Ditto.
      	(alloc_use_cost_map): Ditto.
      	(set_use_iv_cost, get_use_iv_cost): Rename to ...
      	(set_group_iv_cost, get_group_iv_cost): ... here.  Update all uses.
      	(determine_use_iv_cost_generic): Ditto.
      	(determine_group_iv_cost_generic): Ditto.
      	(determine_use_iv_cost_address): Ditto.
      	(determine_group_iv_cost_address): Ditto.
      	(determine_use_iv_cost_condition): Ditto.
      	(determine_group_iv_cost_cond): Ditto.
      	(determine_use_iv_cost): Ditto.
      	(determine_group_iv_cost): Ditto.
      	(set_autoinc_for_original_candidates): Update all uses.
      	(find_iv_candidates): Update all uses.  Refactor dump information.
      	(determine_use_iv_costs): Ditto.
      	(determine_iv_costs): Ditto.
      	(iv_ca_cand_for_use): Rename to ...
      	(iv_ca_cand_for_group): ... here.  Update all uses.
      	(iv_ca_add_use, iv_ca_add_group): Ditto.
      	(iv_ca_set_cp, iv_ca_cost, iv_ca_delta_add): Update all uses.
      	(iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_delta_free): Ditto.
      	(iv_ca_new, iv_ca_dump, iv_ca_extend, iv_ca_narrow): Ditto.
      	(iv_ca_prune, cheaper_cost_with_cand, iv_ca_replace): Ditto.
      	(try_add_cand_for, try_improve_iv_set, find_optimal_iv_set): Ditto.
      	(create_new_iv, adjust_iv_update_pos): Ditto.
      	(rewrite_use_address): Delete.
      	(rewrite_use_address_1): Rename to ...
      	(rewrite_use_address): ... here.
      	(rewrite_use_compare): Update all uses.
      	(rewrite_use): Delete.
      	(rewrite_uses): Rename to ...
      	(rewrite_groups): ... here.  Update all uses.
      	(remove_unused_ivs, free_loop_data): Update all uses.
      	(tree_ssa_iv_optimize_finalize, tree_ssa_iv_optimize_loop): Ditto.
      
      	gcc/testsuite/ChangeLog
      	* gcc.dg/tree-ssa/pr64705.c: Revise check string.
      	* gcc.dg/tree-ssa/scev-9.c: Ditto.
      	* gcc.dg/tree-ssa/scev-10.c: Ditto.
      	* gcc.dg/tree-ssa/scev-11.c: Ditto.
      	* gcc.dg/tree-ssa/scev-12.c: Ditto.
      
      From-SVN: r235513
      Bin Cheng committed
    • [rtlanal.c] Convert conditional compilation on WORD_REGISTER_OPERATIONS · 317d9887
      	* rtlanal.c (nonzero_bits1): Convert preprocessor check
      	for WORD_REGISTER_OPERATIONS to runtime check.
      
      From-SVN: r235512
      Kyrylo Tkachov committed
    • re PR ipa/70760 (wrong generated code for std::make_unique with -fipa-pta) · 72ed2b9c
      2016-04-27  Richard Biener  <rguenther@suse.de>
      
      	PR ipa/70760
      	* tree-ssa-structalias.c (find_func_aliases_for_call): Use
      	aggregate_value_p to determine if a function result is
      	returned by reference.
      	(ipa_pta_execute): Functions having their address taken are
      	not automatically nonlocal.
      
      	* g++.dg/ipa/ipa-pta-2.C: New testcase.
      	* gcc.dg/ipa/ipa-pta-1.c: Adjust.
      
      From-SVN: r235511
      Richard Biener committed
    • re PR sanitizer/70683 (-fcompare-debug bug with -fsanitize=address) · b3b2bae4
      	PR sanitizer/70683
      	* tree-core.h (enum operand_equal_flag): Add OEP_NO_HASH_CHECK.
      	* fold-const.c (operand_equal_p): If flag_checking and
      	OEP_NO_HASH_CHECK is not set in flag, recurse with OEP_NO_HASH_CHECK
      	and if it returns non-zero, assert iterative_hash_expr on both
      	args is the same.
      
      From-SVN: r235507
      Jakub Jelinek committed
    • constexpr.c (get_fundef_copy): Use the original function for non-recursive evaluations. · 3c98ff9b
      	cp/
      	* constexpr.c (get_fundef_copy): Use the original function for
      	non-recursive evaluations.
      	(save_fundef_copy): Always expect a slot to be available.
      
      	testsuite/
      	* g++.dg/cpp0x/constexpr-recursion3.C: New.
      	* g++.dg/ubsan/pr63956.C: Adjust error location.
      
      From-SVN: r235506
      Nathan Sidwell committed
    • [multiple changes] · 437244c7
      2016-04-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* aa_util.adb, aa_util.ads: Removed, no longer used.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_prag.adb (Analyze_Pragma): An object
      	renaming declaration resulting from the expansion of an object
      	declaration is a suitable context for pragma Ghost.
      
      2016-04-27  Doug Rupp  <rupp@adacore.com>
      
      	* init.c: Refine last checkin so the only requirement is the
      	signaling compilation unit is compiled with the same mode as
      	the compilation unit containing the initial landing pad.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch13.adb (Valid_Default_Iterator): Better filter of illegal
      	specifications for Default_Iterator, including overloaded cases
      	where no interpretations are legal, and return types that are
      	not iterator types.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_ch5.adb (Expand_N_Assignment_Statement): Do not install
      	an accessibility check when the left hand side of the assignment
      	denotes a container cursor.
      	* exp_util.ads, exp_util.adb (Find_Primitive_Operations): Removed.
      	* sem_ch4.adb (Find_Indexing_Operations): New routine.
      	(Try_Container_Indexing): Code cleanup.
      
      From-SVN: r235505
      Arnaud Charlet committed
    • [multiple changes] · 57323d5b
      2016-04-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* sem_ch10.adb, sem_case.adb: Mark messages udner -gnatwr when needed.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* errout.adb, errutil.adb: Minor reformatting.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch13.adb (Analyze_Aspect_Specifications, case Pre/Post):
      	Check that the classwide version is illegal when the prefix is
      	an operation of an untagged synchronized type.
      
      From-SVN: r235504
      Arnaud Charlet committed
    • [multiple changes] · ac566cbe
      2016-04-27  Arnaud Charlet  <charleT@adacore.com>
      
      	* sinput-l.ads, sem_ch13.adb: Minor editing.
      
      2016-04-27  Doug Rupp  <rupp@adacore.com>
      
      	* init.c (__gnat_adjust_context_for_raise) [arm-linux thumb]:
      	Bump the pc so the lower order bit is set.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_case.adb, sem_case.ads (NO_Op): If appropriate warning is
      	enabled, report an empty range in a case construct.
      
      From-SVN: r235503
      Arnaud Charlet committed
    • sinput.ads, [...]: Minor editing. · 6616e390
      2016-04-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* sinput.ads, a-cfdlli.adb, a-crbtgo.adb, a-chtgop.adb, a-cbhama.adb,
      	a-rbtgbo.adb, a-crdlli.adb, a-chtgbo.adb: Minor editing.
      
      From-SVN: r235502
      Arnaud Charlet committed
    • [multiple changes] · 6d0d18dc
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* a-chtgop.adb (Adjust): Zero the tampering counts on assignment,
      	as is done for the other containers.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* ghost.adb (In_Subprogram_Body_Profile): New routine.
      	(Is_OK_Declaration): Treat an unanalyzed expression
      	function as an OK context.  Treat a reference to a Ghost entity
      	as OK when it appears within the profile of a subprogram body.
      
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* errout.ads: Document the fact that informational messages
      	don't have to be warnings.
      	* errout.adb (Error_Msg_Internal): In statistics counts, deal
      	correctly with informational messages that are not warnings.
      	(Error_Msg_NEL): Remove useless 'if' aroung Set_Posted, because
      	Set_Posted already checks for errors and ignores others.
      	* erroutc.adb (Prescan_Message): Set Is_Serious_Error to False
      	if Is_Info_Msg; the previous code was assuming that Is_Info_Msg
      	implies Is_Warning_Msg.
      	* errutil.adb (Error_Msg): In statistics counts, deal correctly
      	with informational messages that are not warnings.
      
      From-SVN: r235500
      Arnaud Charlet committed
    • [multiple changes] · 680d5f61
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_util.ads, sem_util.adb (Is_Null_Record_Type): New predicate
      	to determine whether a record type is a null record.
      	* sem_ch3.adb (Analyze_Object_Declaration): If the type is a
      	null record and there is no expression in the declaration,
      	no predicate check applies to the object.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch7.adb (Analyze_Package_Body_Helper): The body of an
      	instantiated package should not cause freezing of previous contracts.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_dim.adb (Analyze_Dimension): Handle subtype declarations
      	that do not come from source.
      	(Analyze_Dimension_Subtype_Declaration): Allow confirming
      	dimensions on subtype entity, either inherited from base type
      	or provided by aspect specification.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* s-gearop.ads (Matrix_Vector_Solution, Matrix_Matrix_Solution):
      	Add scalar formal object Zero, to allow detection and report
      	when the matrix is singular.
      	* s-gearop.adb (Matrix_Vector_Solution, Matrix_Matrix_Solution):
      	Raise Constraint_Error if the Forward_Eliminate pass has
      	determined that determinant is Zero.o
      	* s-ngrear.adb (Solve): Add actual for Zero in corresponding
      	instantiations.
      	* s-ngcoar.adb (Solve): Ditto.
      
      From-SVN: r235499
      Arnaud Charlet committed
    • [multiple changes] · 14f3895c
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch3.adb: Minor reformatting.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_dim.adb (Analyze_Dimension, case N_Identifier): Check
      	that identifier has a usable type before analysis, to handle
      	properly identifiers introduced after some lexical/syntactic
      	recovery that created new identifiers.
      
      From-SVN: r235498
      Arnaud Charlet committed
    • [multiple changes] · db99c46e
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* a-coinve.adb, a-comutr.adb, a-conhel.adb, a-convec.adb,
      	exp_util.adb: Remove assertions that can fail in obscure cases when
      	assertions are turned on but tampering checks are turned off.
      
      2016-04-27  Javier Miranda  <miranda@adacore.com>
      
      	* exp_ch6.adb (Add_Call_By_Copy_Code,
      	Add_Simple_Call_By_Copy_Code, Expand_Actuals): Handle formals
      	whose type comes from the limited view.
      
      2016-04-27  Yannick Moy  <moy@adacore.com>
      
      	* a-textio.adb: Complete previous patch.
      
      2016-04-27  Yannick Moy  <moy@adacore.com>
      
      	* inline.adb (Expand_Inlined_Call): Use Cannot_Inline instead of
      	Error_Msg_N to issue message about impossibility to inline call,
      	with slight change of message.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_spark.adb (Expand_Potential_Renaming): Removed.
      	(Expand_SPARK): Update the call to expand a potential renaming.
      	(Expand_SPARK_Potential_Renaming): New routine.
      	* exp_spark.ads (Expand_SPARK_Potential_Renaming): New routine.
      	* sem.adb Add with and use clauses for Exp_SPARK.
      	(Analyze): Expand a non-overloaded potential renaming for SPARK.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch3.adb (Constrain_Discriminated_Type): In an instance,
      	check full view for the presence of defaulted discriminants,
      	even when the partial view of a private type has no visible and
      	no unknown discriminants.
      
      From-SVN: r235497
      Arnaud Charlet committed
    • [multiple changes] · c6c8d059
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* lib-xref.adb, exp_ch3.adb: Minor reformatting.
      
      2016-04-27  Nicolas Roche  <roche@adacore.com>
      
      	* rtinit.c: Add weak symbol __gnat_do_argv_expansion.
      
      From-SVN: r235496
      Arnaud Charlet committed
    • [multiple changes] · caa64a44
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_prag.adb (Process_Atomic_Independent_Shared_Volatile): Code
      	cleanup. Check the original node when trying to determine the node kind
      	of pragma Volatile's argument to account for untagged derivations
      	where the type is transformed into a constrained subtype.
      
      2016-04-27  Olivier Hainque  <hainque@adacore.com>
      
      	* mkdir.c (__gnat_mkdir): Rework the vxworks section to use a
      	consistent posix interface on the caller side.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch10.adb (Build_Limited_View, Decorate_Type): If this
      	is a limited view of a type, initialize the Limited_Dependents
      	field to catch misuses of the type in a client unit.
      
      2016-04-27  Thomas Quinot  <quinot@adacore.com>
      
      	* a-strunb-shared.adb (Finalize): add missing Reference call.
      	* s-strhas.adb: minor grammar fix and extension of comment
      	* sem_ch8.adb: minor whitespace fixes
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* lib-xref.adb (Get_Type_Reference): Handle properly the case
      	of an object declaration whose type definition is a class-wide
      	subtype and whose expression is a function call that returns a
      	classwide type.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_util.ads, sem_util.adb (Output_Entity): New routine.
      	(Output_Name): New routine.
      
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* exp_ch3.adb (Rewrite_As_Renaming): Disable previous change for now.
      
      From-SVN: r235495
      Arnaud Charlet committed
    • [multiple changes] · a6ac7311
      2016-04-27  Vincent Celier  <celier@adacore.com>
      
      	* gnatcmd.adb: For "gnat ls -V -P", recognize switch
      	--unchecked-shared-lib-imports and set the flag
      	Opt.Unchecked_Shared_Lib_Imports accordingly.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_prag.adb (Analyze_Pre_Post_Condition_In_Decl_Part):
      	A generic subprogram is never a primitive operation, and thus
      	a classwide condition for it is not legal.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_aggr.adb, sem_dim.adb, sem_dim.ads, einfo.adb: Minor
      	reformatting.
      
      From-SVN: r235494
      Arnaud Charlet committed
    • [multiple changes] · 888be6b1
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_res.adb (Flag_Effectively_Volatile_Objects): New routine.
      	(Resolve_Actuals): Flag effectively volatile objects with enabled
      	property Async_Writers or Effective_Reads as illegal.
      	* sem_util.adb (Is_OK_Volatile_Context): Comment reformatting.
      
      2016-04-27  Javier Miranda  <miranda@adacore.com>
      
      	* exp_ch3.adb (Make_Predefined_Primitive_Specs):
      	Do not generate the profile of the equality operator if it has
      	been explicitly defined as abstract in the parent type. Required
      	to avoid reporting an spurious error.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_dim.ads, sem_dim.adb (Check_Expression_Dimensions): New
      	procedure to compute the dimension vector of a scalar expression
      	and compare it with the dimensions if its expected subtype. Used
      	for the ultimate components of a multidimensional aggregate,
      	whose components typically are themselves aggregates that are
      	expanded separately. Previous to this patch, dimensionality
      	checking on such aggregates generated spurious errors.
      	* sem_aggr.adb (Resolve_Array_Aggregate): Use
      	Check_Expression_Dimensions when needed.
      
      2016-04-27  Javier Miranda  <miranda@adacore.com>
      
      	* einfo.ads, einfo.adb (Corresponding_Function): New attribute
      	(applicable to E_Procedure).
      	(Corresponding_Procedure): New attribute (applicable to E_Function).
      	* exp_util.adb (Build_Procedure_Form): Link the function with
      	its internally built proc and viceversa.
      	* sem_ch6.adb (Build_Subprogram_Declaration): Propagate the
      	attribute Rewritten_For_C and Corresponding_Procedure to the body.
      	* exp_ch6.adb (Rewritten_For_C_Func_Id): Removed.
      	(Rewritten_For_C_Proc_Id): Removed.
      	* exp_unst.adb (Note_Uplevel_Ref): Use the new attribute to
      	locate the corresponding procedure.
      
      From-SVN: r235493
      Arnaud Charlet committed
    • [multiple changes] · c7518e6f
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_ch13.adb (Analyze_Aspect_Export_Import): Signal that there is no
      	corresponding pragma.
      
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* exp_ch3.adb: Minor comment improvement.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): If the
      	return type is an untagged limited record with only access
      	discriminants and no controlled components, the return value does not
      	need to use the secondary stack.
      
      2016-04-27  Javier Miranda  <miranda@adacore.com>
      
      	* exp_util.adb (Remove_Side_Effects): When
      	generating C code handle object declarations that have
      	discriminants and are initialized by means of a call to a
      	function.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* a-textio.adb (Get_Line function): Handle properly the case of
      	a line that has the same length as the buffer (or a multiple
      	thereof) and there is no line terminator.
      	* a-tigeli.adb (Get_Line procedure): Do not store an end_of_file
      	in the string when there is no previous line terminator and we
      	need at most one additional character.
      
      From-SVN: r235492
      Arnaud Charlet committed
    • [multiple changes] · 814cc240
      2016-04-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* s-rident.ads: Make No_Implicit_Loops non partition wide.
      
      2016-04-27  Arnaud Charlet  <charlet@adacore.com>
      
      	* sem_ch11.adb (Analyze_Handled_Statements): check useless
      	assignments also in entries and task bodies, not only in
      	procedures and declaration blocks.
      	* sem_ch5.adb (Analyze_Block_Statement): check useless
      	assignements in declaration blocks as part of processing their
      	handled statement sequence, just like it was done for procedures
      	and now is also done for entries and task bodies.
      	* sem_warn.adb (Warn_On_Useless_Assignment): detect boundries
      	of entries and task bodies just like of procedures.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_util.adb (Is_Volatile_Function): Recognize
      	a function declared within a protected type as well as the
      	protected/unprotected version of a function.
      
      From-SVN: r235491
      Arnaud Charlet committed
    • exp_ch3.adb (Expand_N_Object_Declaration): Rewrite an object declaration of the form "X ... · 24d2fbbe
      2016-04-27  Bob Duff  <duff@adacore.com>
      
      	* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite an object
      	declaration of the form "X : T := Func (...);", where T is
      	controlled, as a renaming.
      	* a-strunb-shared.adb (Finalize): Set the Unbounded_String Object
      	to be an empty string, instead of null-ing out the Reference.
      	* exp_util.adb (Needs_Finalization): Remove redundant code.
      
      From-SVN: r235488
      Bob Duff committed
    • libstdc++/70767 Define std::numeric_limits<cv T> in C++98 mode · 45e20696
      	PR libstdc++/70767
      	* include/std/limits: Update comments about DRs.
      	(numeric_limits<const _Tp>, numeric_limits<volatile _Tp>,
      	numeric_limits<const volatile _Tp>): Define unconditionally.
      
      From-SVN: r235486
      Jonathan Wakely committed
    • * doc/invoke.texi (-frename-registers): Also enabled at -Os. · 58197648
      From-SVN: r235485
      Bernd Schmidt committed
    • re PR go/49889 (Calling a function whose name is obscured by a local variable… · 9ec5d66b
      re PR go/49889 (Calling a function whose name is obscured by a local variable does not produce an error)
      
      	PR middle-end/49889
      gcc	* varasm.c (merge_weak): Generate an error if an attempt is made
      	to convert a non-weak static function into a weak, public function.
      
      testsuite	* gcc.dg/pr49889.c: New test.
      
      From-SVN: r235484
      Nick Clifton committed
    • [multiple changes] · 2e885a6f
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* aspects.ads Aspects Export and Import do not require delay. They
      	were classified as delayed aspects, but treated as non-delayed
      	by the analysis of aspects.
      	* freeze.adb (Copy_Import_Pragma): New routine.
      	(Wrap_Imported_Subprogram): Copy the import pragma by first
      	resetting all semantic fields to avoid an infinite loop when
      	performing the copy.
      	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Add
      	comment on the processing of aspects Export and Import
      	at the freeze point.
      	(Analyze_Aspect_Convention: New routine.
      	(Analyze_Aspect_Export_Import): New routine.
      	(Analyze_Aspect_External_Link_Name): New routine.
      	(Analyze_Aspect_External_Or_Link_Name): Removed.
      	(Analyze_Aspect_Specifications): Factor out the analysis of
      	aspects Convention, Export, External_Name, Import, and Link_Name
      	in their respective routines.  Aspects Export and Import should
      	not generate a Boolean pragma because their corresponding pragmas
      	have a very different syntax.
      	(Build_Export_Import_Pragma): New routine.
      	(Get_Interfacing_Aspects): New routine.
      
      2016-04-27  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* inline.adb (Add_Inlined_Body): Overhaul implementation,
      	robustify handling of -gnatn1, add special treatment for
      	expression functions.
      
      2016-04-27  Doug Rupp  <rupp@adacore.com>
      
      	* g-traceb.ads: Update comment.
      	* exp_ch2.adb: minor style fix in object declaration
      
      From-SVN: r235483
      Arnaud Charlet committed
    • [multiple changes] · 2a253c5b
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_elab.adb (Check_Internal_Call): Do not
      	consider a call when it appears within pragma Initial_Condition
      	since the pragma is part of the elaboration statements of a
      	package body and may only call external subprograms or subprograms
      	whose body is already available.
      	(Within_Initial_Condition): New routine.
      
      2016-04-27  Ed Schonberg  <schonberg@adacore.com>
      
      	* exp_util.adb (Build_Procedure_Form): Prevent double generation
      	of the procedure form when dealing with an expression function
      	whose return type is an array.
      	* sem_ch3.adb: Fix out-of order Has_Predicates setting.
      	* exp_ch6.adb: Proper conversion for inherited operation in C.
      	* sem_ch6.adb: Code cleanup.
      
      2016-04-27  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* lib-xref.ads, sem_ch10.adb: minor style fix in comment
      	* g-socket.adb: Minor reformatting.
      	* sinfo.ads: Minor comment correction.
      	* sem_warn.ads: minor grammar fix in comment
      
      From-SVN: r235482
      Arnaud Charlet committed
    • Fix ChangeLog entry for r235478 · 780fd376
      From-SVN: r235481
      Prathamesh Kulkarni committed
    • Fix typo in gcc/testsuite/ChangeLog for revision 235436. · 25939d34
      From-SVN: r235480
      Bin Cheng committed
    • gigi.h (gnat_to_gnu_entity): Adjust prototype. · afc737f0
      	* gcc-interface/gigi.h (gnat_to_gnu_entity): Adjust prototype.
      	(maybe_pad_type): Adjust comment.
      	(finish_record_type): Likewise.
      	(rest_of_record_type_compilation): Likewise.
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Change DEFINITION type
      	parameter from integer to boolean.  Adjust recursive calls.
      	<E_Subprogram_Type>: Use copy_type and remove redundant assignments.
      	<E_Signed_Integer_Subtype>:  Adjust comment.  Remove call to
      	rest_of_record_type_compilation.  Set TYPE_PADDING_P flag earlier.
      	Pass false to finish_record_type.  Set the debug type later.
      	<E_Record_Subtype>: Remove call to rest_of_record_type_compilation.
      	(gnat_to_gnu_component_type): Fix formatting.
      	(gnat_to_gnu_field_decl): Adjust call to gnat_to_gnu_entity.
      	(gnat_to_gnu_type): Likewise.
      	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
      	(Loop_Statement_to_gnu): Likewise.
      	(Subprogram_Body_to_gnu): Likewise.
      	(Exception_Handler_to_gnu_fe_sjlj): Likewise.
      	(Exception_Handler_to_gnu_gcc): Likewise.
      	(Compilation_Unit_to_gnu): Likewise.
      	(gnat_to_gnu): Likewise.
      	(push_exception_label_stack): Likewise.
      	(elaborate_all_entities_for_package): Likewise.
      	(process_freeze_entity): Likewise.
      	(process_decls): Likewise.
      	(process_type): Likewise.
      	* gcc-interface/utils.c (struct deferred_decl_context_node): Tweak.
      	(maybe_pad_type): Adjust comments.  Set the debug type later.  Remove
      	call to rest_of_record_type_compilation.
      	(rest_of_record_type_compilation): Use copy_type.
      	(copy_type): Use correctly typed constants.
      	(gnat_signed_or_unsigned_type_for): Use copy_type.
      	* gcc-interface/utils2.c (nonbinary_modular_operation): Likewise.
      	(build_goto_raise): Adjust call tognat_to_gnu_entity.
      
      From-SVN: r235479
      Eric Botcazou committed
    • params.def (MAX_PARTITION_SIZE): New param. · a2e76867
      2016-04-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	* params.def (MAX_PARTITION_SIZE): New param.
      	* invoke.texi: Document lto-max-partition.
      lto/
      	* lto-partition.h (lto_balanced_map): New parameter.
      	* lto-partition.c (lto_balanced_map): New parameter
      	max_partition_size.
      	Check if partition size is greater than max_partition_size.
      	* lto.c (do_whole_program_analysis): Adjust calls to
      	lto_balanced_map() to pass 2nd argument.
      
      From-SVN: r235478
      Prathamesh Kulkarni committed
    • re PR ipa/70785 (LTO bootstrap with IPA PTA is broken) · 2b78f221
      2016-04-27  Richard Biener  <rguenther@suse.de>
      
      	PR ipa/70785
      	* tree-ssa-structalias.c (refered_from_nonlocal_fn): New
      	function cummulating used_from_other_partition, externally_visible
      	and force_output from aliases.
      	(refered_from_nonlocal_var): Likewise.
      	(ipa_pta_execute): Use call_for_symbol_and_aliases to cummulate
      	node flags properly.
      
      From-SVN: r235477
      Richard Biener committed
    • invoke.texi (Warning Options): Add -Wmemset-elt-size. · c1e1f433
      	* doc/invoke.texi (Warning Options): Add -Wmemset-elt-size.
      	(-Wmemset-elt-size): New item.
      c-family/
      	* c.opt (Wmemset-elt-size): New option.
      	* c-common.c (warn_for_memset): New function.
      	* c-common.h (warn_for_memset): Declare.
      c/
      	* c-parser.c (c_parser_postfix_expression_after_primary): Call
      	warn_for_memset instead of warning directly here.
      cp/
      	* parser.c (cp_parser_postfix_expression): Call
      	warn_for_memset instead of warning directly here.
      testsuite/
      	* c-c++-common/memset-array.c: New test.
      
      From-SVN: r235475
      Bernd Schmidt committed
    • re PR ada/70759 (Ada rts fails to build with -mabi=ilp32) · 06aed101
      	PR ada/70759
      	* stor-layout.h (internal_reference_types): Delete.
      	* stor-layout.c (reference_types_internal): Likewise.
      	(internal_reference_types): Likewise.
      	(layout_type) <REFERENCE_TYPE>: Adjust.
      ada/
      	* gcc-interface/misc.c (gnat_init): Do not call
      	internal_reference_types.
      
      From-SVN: r235472
      Eric Botcazou committed
    • * gennews (files): Add files for GCC 6. · 9364c30e
      From-SVN: r235470
      Jakub Jelinek committed