Commit Graph

145556 Commits

Author SHA1 Message Date
H.J. Lu
087146caa7 Extend STV pass to 64-bit mode
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
2016-04-27 10:32:40 -07:00
H.J. Lu
92329f9f80 Replace ".{5}" with ".{5,6}" in avx512vl-vmovdqa64-1.c
* gcc.target/i386/avx512vl-vmovdqa64-1.c: Replace ".{5}" with
	".{5,6}".

From-SVN: r235516
2016-04-27 08:51:22 -07:00
Pierre-Marie de Rodat
c027737fd9 DWARF: turn dw_loc_descr_node field into hash map for frame offset check
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
2016-04-27 15:03:40 +00:00
Martin Liska
53f2382df4 tree-ssa-loop-ivopts.c (iv_ca_dump): Fix level of indentation.
* tree-ssa-loop-ivopts.c (iv_ca_dump): Fix level of indentation.
	(free_loop_data): Release vuses of groups.

From-SVN: r235514
2016-04-27 14:52:38 +00:00
Bin Cheng
309a0cf699 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
2016-04-27 14:51:26 +00:00
Kyrylo Tkachov
317d98872b [rtlanal.c] Convert conditional compilation on WORD_REGISTER_OPERATIONS
* rtlanal.c (nonzero_bits1): Convert preprocessor check
	for WORD_REGISTER_OPERATIONS to runtime check.

From-SVN: r235512
2016-04-27 14:38:10 +00:00
Richard Biener
72ed2b9c76 re PR ipa/70760 (wrong generated code for std::make_unique with -fipa-pta)
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
2016-04-27 14:10:04 +00:00
Jakub Jelinek
b3b2bae4e2 re PR sanitizer/70683 (-fcompare-debug bug with -fsanitize=address)
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
2016-04-27 15:29:34 +02:00
Nathan Sidwell
3c98ff9b1a constexpr.c (get_fundef_copy): Use the original function for non-recursive evaluations.
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
2016-04-27 13:28:44 +00:00
Arnaud Charlet
437244c773 [multiple changes]
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
2016-04-27 15:28:30 +02:00
Arnaud Charlet
57323d5bd3 [multiple changes]
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
2016-04-27 15:25:54 +02:00
Arnaud Charlet
ac566cbe4b [multiple changes]
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
2016-04-27 15:22:48 +02:00
Arnaud Charlet
6616e39069 sinput.ads, [...]: Minor editing.
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
2016-04-27 15:15:25 +02:00
Arnaud Charlet
6d0d18dcb1 [multiple changes]
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
2016-04-27 15:09:13 +02:00
Arnaud Charlet
680d5f6190 [multiple changes]
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
2016-04-27 15:05:41 +02:00
Arnaud Charlet
14f3895c40 [multiple changes]
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
2016-04-27 14:56:41 +02:00
Arnaud Charlet
db99c46e1d [multiple changes]
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
2016-04-27 14:55:18 +02:00
Arnaud Charlet
c6c8d05942 [multiple changes]
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
2016-04-27 14:52:02 +02:00
Arnaud Charlet
caa64a44ac [multiple changes]
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
2016-04-27 14:47:56 +02:00
Arnaud Charlet
a6ac73115a [multiple changes]
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
2016-04-27 14:42:03 +02:00
Arnaud Charlet
888be6b18a [multiple changes]
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
2016-04-27 14:37:55 +02:00
Arnaud Charlet
c7518e6f52 [multiple changes]
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
2016-04-27 14:30:49 +02:00
Arnaud Charlet
814cc240b8 [multiple changes]
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
2016-04-27 14:26:50 +02:00
Bob Duff
24d2fbbeac exp_ch3.adb (Expand_N_Object_Declaration): Rewrite an object declaration of the form "X ...
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
2016-04-27 14:20:54 +02:00
Jonathan Wakely
45e206963a libstdc++/70767 Define std::numeric_limits<cv T> in C++98 mode
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
2016-04-27 12:57:58 +01:00
Bernd Schmidt
5819764843 * doc/invoke.texi (-frename-registers): Also enabled at -Os.
From-SVN: r235485
2016-04-27 11:43:58 +00:00
Nick Clifton
9ec5d66b5d 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
2016-04-27 11:29:20 +00:00
Arnaud Charlet
2e885a6f7c [multiple changes]
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
2016-04-27 13:01:35 +02:00
Arnaud Charlet
2a253c5bba [multiple changes]
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
2016-04-27 12:58:41 +02:00
Prathamesh Kulkarni
780fd3766a Fix ChangeLog entry for r235478
From-SVN: r235481
2016-04-27 10:50:07 +00:00
Bin Cheng
25939d347f Fix typo in gcc/testsuite/ChangeLog for revision 235436.
From-SVN: r235480
2016-04-27 10:49:58 +00:00
Eric Botcazou
afc737f052 gigi.h (gnat_to_gnu_entity): Adjust prototype.
* 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
2016-04-27 10:49:35 +00:00
Prathamesh Kulkarni
a2e76867ad params.def (MAX_PARTITION_SIZE): New param.
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
2016-04-27 10:46:16 +00:00
Richard Biener
2b78f22152 re PR ipa/70785 (LTO bootstrap with IPA PTA is broken)
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
2016-04-27 10:42:08 +00:00
Bernd Schmidt
c1e1f4333b invoke.texi (Warning Options): Add -Wmemset-elt-size.
* 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
2016-04-27 09:48:56 +00:00
Eric Botcazou
06aed101fc re PR ada/70759 (Ada rts fails to build with -mabi=ilp32)
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
2016-04-27 07:49:49 +00:00
Jakub Jelinek
9364c30e32 * gennews (files): Add files for GCC 6.
From-SVN: r235470
2016-04-27 09:48:34 +02:00
Jakub Jelinek
108b7b2901 re PR sanitizer/70683 (-fcompare-debug bug with -fsanitize=address)
PR sanitizer/70683
	* tree.h (inchash::add_expr): Add FLAGS argument.
	* tree.c (inchash::add_expr): Likewise.  If not OEP_ADDRESS_OF,
	use STRIP_NOPS first.  For INTEGER_CST assert not OEP_ADDRESS_OF.
	For REAL_CST and !HONOR_SIGNED_ZEROS (t) hash +/- 0 the same.
	Formatting fix.  Adjust recursive calls.  For tcc_comparison,
	if swap_tree_comparison (code) is smaller than code, hash that
	and arguments in the other order.  Hash CONVERT_EXPR the same
	as NOP_EXPR.  For OEP_ADDRESS_OF hash MEM_REF with 0 offset
	of ADDR_EXPR of decl as the decl itself.  Add or remove
	OEP_ADDRESS_OF from recursive flags as needed.  For
	FMA_EXPR, WIDEN_MULT_{PLUS,MINUS}_EXPR hash the first two
	operands commutatively and only the third one normally.
	For internal CALL_EXPR hash in CALL_EXPR_IFN.

From-SVN: r235469
2016-04-27 09:45:57 +02:00
Svante Signell
1ee806d8d7 Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
* gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
	* s-osinte-gnu.ads: Small tweaks.
	* s-osinte-gnu.adb: New file.

From-SVN: r235467
2016-04-27 07:38:41 +00:00
Sebastian Huber
c47194d2ab [libatomic] Add RTEMS support
gcc/

	* config/rtems.h (LIB_SPEC): Add -latomic.

libatomic/

	* configure.tgt (configure_tgt_pre_target_cpu_XCFLAGS): New variable.
	(*-*-rtems*): New supported target.
	* config/rtems/host-config.h: New file.
	* config/rtems/lock.c: Likewise.

From-SVN: r235466
2016-04-27 07:14:42 +00:00
Joel Sherrill
727cbedf8b [Microblaze] Redefine LINK_SPEC for RTEMS
gcc/

	* config/microblaze/rtems.h: Redefine LINK_SPEC to avoid
	xilink.ld and flags not relevant to RTEMS.

From-SVN: r235465
2016-04-27 07:06:43 +00:00
GCC Administrator
f702d11090 Daily bump.
From-SVN: r235464
2016-04-27 00:16:19 +00:00
Martin Sebor
8ac432938d PR c++/66639 - declare __func__ , __FUNCTION__ & __PRETTY_FUNCTION__ constexpr
PR c++/66639 - declare __func__ , __FUNCTION__ & __PRETTY_FUNCTION__ constexpr
* g++.dg/cpp1y/func_constexpr.C: New test.

From-SVN: r235458
2016-04-26 16:57:34 -06:00
Patrick Palka
843ce8abaf Fix PR c++/70241 (inconsistent access with in-class enumeration)
gcc/cp/ChangeLog:

	PR c++/70241
	* decl.c (build_enumerator): Set current_access_specifier when
	declaring an enumerator belonging to an in-class enumeration.
	* parser.c (cp_parser_check_access_in_redecleration): Also
	consider in-class enumerations.

gcc/testsite/ChangeLog:

	PR c++/70241
	* g++.dg/cpp0x/enum32.C: New test.
	* g++.dg/cpp0x/enum33.C: New test.

From-SVN: r235456
2016-04-26 22:24:43 +00:00
Senthil Kumar Selvaraj
3866f82f58 pr69102.c: Require scheduling support.
2016-04-06  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	* gcc.c-torture/compile/pr69102.c: Require scheduling support.
	* gcc.c-torture/compile/pr37669.c: Require >=32 bit integers.
	* gcc.c-torture/execute/bitfld-6.c: Likewise.
	* gcc.c-torture/execute/bitfld-7.c: Likewise.
	* gcc.c-torture/execute/pr38151.c: Likewise.
	* gcc.c-torture/execute/pr66556.c: Likewise.
	* gcc.c-torture/execute/pr67781.c: Likewise.
	* gcc.c-torture/execute/pr68648.c: Likewise.

From-SVN: r235454
2016-04-26 14:56:29 -06:00
Zhouyi Zhou
a24c4267fb toplev.c (backend_init_target): Avoid calling init_reload when using LRA.
2016-04-26  Zhouyi Zhou  <yizhouzhou@ict.ac.cn>

	* toplev.c (backend_init_target): Avoid calling init_reload when using
	LRA.

From-SVN: r235453
2016-04-26 14:52:16 -06:00
Ian Lance Taylor
e64e93877b compiler: Add Enclosed_var_expression.
Introduces an abstraction for a variable referenced in a closure.
    This maintains the underlying expression which accesses a field within
    a closure variable and gives easy access to the underlying
    Named_object.
    
    Reviewed-on: https://go-review.googlesource.com/22374

From-SVN: r235452
2016-04-26 20:37:58 +00:00
Jakub Jelinek
5e851c020a reorg.c (try_merge_delay_insns): Declare i and j inside the for loops rather than one for the whole function.
* reorg.c (try_merge_delay_insns): Declare i and j inside the
	for loops rather than one for the whole function.

From-SVN: r235451
2016-04-26 22:32:05 +02:00
Marc Glisse
ca1206be9a match.pd: u + 3 < u is u > UINT_MAX - 3
2016-04-26  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd (X + CST CMP X): New transformation.

gcc/testsuite/
	* gcc.dg/tree-ssa/overflow-1.c: New testcase.

From-SVN: r235448
2016-04-26 15:03:08 +00:00
Marek Polacek
b02a5e265d re PR c/70791 (-Wnested-externs prints inconsistent column number)
PR c/70791
	* c-decl.c (pushdecl): Pass LOCUS down to warning.

	* gcc.dg/Wnested-externs-2.c: New test.

From-SVN: r235447
2016-04-26 15:01:09 +00:00