Commit Graph

157608 Commits

Author SHA1 Message Date
Jan Hubicka
35a282e0bc tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
* tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
	(lower_emutls_function_body): Do not compute it.

From-SVN: r254836
2017-11-16 16:53:50 +00:00
Jan Hubicka
c2e87766d3 ipa-split.c (split_bb_info): Turn time to sreal.
* ipa-split.c (split_bb_info): Turn time to sreal.
	(split_point): Likewise.
	(dump_split_point): Likewise.
	(fine_split_points): Likewise.
	(execute_split_functions): Only zero split_bbs; turn time to sreals.

From-SVN: r254835
2017-11-16 16:52:20 +00:00
Jan Hubicka
b71289b1ef ipa-fnsummary.c (analyze_function_body): Accumulate time consistently in sreal.
* ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
	in sreal.
	* gcc.dg/ipa/ipcp-2.c: Lower threshold.

From-SVN: r254834
2017-11-16 16:50:47 +00:00
Martin Sebor
913f8c088e PR middle-end/63477 - Bogus warning with -O3 -Warray-bounds: array subscript
PR middle-end/63477 - Bogus warning with -O3 -Warray-bounds: array subscript
is above array bounds

gcc/testsuite/ChangeLog:

	PR middle-end/63477
	* gcc.dg/pr63477.c: New test.

From-SVN: r254833
2017-11-16 09:48:36 -07:00
Jan Hubicka
b00ff621f6 predict.c (combine_predictions_for_bb): Preserve zero predicted eges.
* predict.c (combine_predictions_for_bb): Preserve zero predicted	
	eges.
	(expensive_function_p): Remove useless assert.
	(determine_unlikely_bbs): Propagate also forward; determine cold blocks

From-SVN: r254832
2017-11-16 16:41:22 +00:00
Jason Merrill
aef0c806eb Remove wrong ChangeLog entry
From-SVN: r254831
2017-11-16 11:24:53 -05:00
Martin Sebor
8a5ee94a08 PR tree-optimization/82588 - missing -Warray-bounds on a excessively large index
PR tree-optimization/82588 - missing -Warray-bounds on a excessively large index
PR tree-optimization/82583 - missing -Warray-bounds on out-of-bounds inner indic

gcc/ChangeLog:

	PR tree-optimization/82588
	PR tree-optimization/82583
	* tree-vrp.c (check_array_ref): Handle flexible array members,
	string literals, and inner indices.
	(search_for_addr_array): Add detail to diagnostics.

gcc/testsuite/ChangeLog:

	PR tree-optimization/82588
	PR tree-optimization/82583
	* c-c++-common/Warray-bounds.c: New test.
	* gcc.dg/Warray-bounds-11.c: Adjust.
	* gcc.dg/Warray-bounds-22.c: New test.

From-SVN: r254830
2017-11-16 09:12:36 -07:00
Doug Rupp
79cefe9d7d Makefile.in: Merge Aarch64 and ARM "ifeq" blocks.
2017-11-16  Doug Rupp  <rupp@adacore.com>

	* gcc-interface/Makefile.in: Merge Aarch64 and ARM "ifeq" blocks.

From-SVN: r254829
2017-11-16 16:06:48 +00:00
Pierre-Marie de Rodat
d2ca577995 [multiple changes]
2017-11-16  Steve Baird  <baird@adacore.com>

	* debug.adb: Update another comment to indicate gnat2scil's use of the
	-gnatd.7 switch.

2017-11-16  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Call_Helper): Avoid creating a transient scope in
	the case of nested build-in-place calls.

From-SVN: r254827
2017-11-16 15:56:41 +00:00
Pierre-Marie de Rodat
c82387ccc4 [multiple changes]
2017-11-16  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Document the switches
	available in gnatsymbolize.

2017-11-16  Steve Baird  <baird@adacore.com>

	* debug.adb: Update comment to indicate gnat2scil's use of the -gnatd.7
	switch.

From-SVN: r254826
2017-11-16 15:49:46 +00:00
Pierre-Marie de Rodat
a3f9da7084 [multiple changes]
2017-11-16  Gary Dismukes  <dismukes@adacore.com>

	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, sem_ch6.adb,
	sem_elab.adb: Minor editorial corrections.
	* gnat_ugn.texi: Regenerate.

2017-11-16  Joel Brobecker  <brobecker@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst (GNAT UGN): Add
	gnatsymbolize documentation.
	* gnat_ugn.texi: Regenerate.

2017-11-16  Steve Baird  <baird@adacore.com>

	* sem_ch3.adb (Build_Derived_Record_Type): Replace all uses of
	"Scope (Parent_Type)" with "Scope (Parent_Base)".

From-SVN: r254825
2017-11-16 15:44:12 +00:00
Nathan Sidwell
5f3682ffce [PATCH] New lang hook
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01340.html
	PR c++/82836
	PR c++/82737
	* tree.h (COPY_DECL_RTL): Rename parms for clarity.
	(SET_DECL_ASSEMBLER_NAME): Forward to
	overwrite_decl_assembler_name.
	(COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
	(overwrite_decl_assembler_name): Declare.
	* tree.c (overwrite_decl_assembler_name): New.
	* langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
	(LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
	(LANG_HOOKS_INITIALIZER): Add it.
	* langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
	* langhooks.c (lhd_set_decl_assembler_name): Use
	SET_DECL_ASSEMBLER_NAME.
	(lhd_overwrite_decl_assembler_name): Default implementation.

	PR c++/82836
	PR c++/82737
	* cp-objcp-common.h (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME):
	Override.
	* cp-tree.h (overwrite_mangling): Declare.
	* decl2.c (struct mangled_decl_hash): Entries are deletable.
	(overwrite_mangling): New.

	PR c++/82836
	PR c++/82737
	* g++.dg/pr82836.C: New.

From-SVN: r254823
2017-11-16 14:54:54 +00:00
Jonathan Wakely
a930324dab Add noexcept to std::shared_future copy operations (LWG DR 2799)
* include/std/future (shared_future): Add noexcept to copy constructor
	and copy-assignment operator (LWG 2799).

From-SVN: r254821
2017-11-16 14:39:41 +00:00
Pekka Jääskeläinen
6748a40f13 [BRIG] added documentation in gccbrig.texi
From-SVN: r254820
2017-11-16 13:59:16 +00:00
Hristian Kirtchev
7fb62ca1b7 opt.ads: Elaboration warnings are now on by default.
2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* opt.ads: Elaboration warnings are now on by default. Add a comment
	explaining why this is needed.
	* sem_ch9.adb (Analyze_Requeue): Preserve the status of elaboration
	warnings.
	* sem_ch12.adb (Analyze_Package_Instantiation): Preserve the status of
	elaboration warnings.
	(Analyze_Subprogram_Instantiation): Preserve the status of elaboration
	warnings.
	* sem_elab.adb: Update the structure of Call_Attributes and
	Instantiation_Attributes.
	(Build_Call_Marker): Propagate the status of elaboration warnings from
	the call to the marker.
	(Extract_Call_Attributes): Extract the status of elaboration warnings.
	(Extract_Instantiation_Attributes): Extract the status of elaboration
	warnings.
	(Process_Conditional_ABE_Activation_Impl): Elaboration diagnostics are
	now dependent on the status of elaboration warnings.
	(Process_Conditional_ABE_Call_Ada): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	(Process_Conditional_ABE_Instantiation_Ada): Elaboration diagnostics
	are now dependent on the status of elaboration warnings.
	(Process_Guaranteed_ABE_Activation_Impl): Remove pragma Unreferenced
	for formal Call_Attrs. Elaboration diagnostics are now dependent on the
	status of elaboration warnings.
	(Process_Guaranteed_ABE_Call): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	(Process_Guaranteed_ABE_Instantiation): Elaboration diagnostics are now
	dependent on the status of elaboration warnings.
	* sem_prag.adb (Analyze_Pragma): Remove the unjustified warning
	concerning pragma Elaborate.
	* sem_res.adb (Resolve_Call): Preserve the status of elaboration
	warnings.
	(Resolve_Entry_Call): Propagate flag Is_Elaboration_Warnings_OK_Node
	from the procedure call to the entry call.
	* sem_util.adb (Mark_Elaboration_Attributes): Add formal parameter
	Warnings.
	(Mark_Elaboration_Attributes_Node): Preserve the status of elaboration
	warnings
	* sem_util.ads (Mark_Elaboration_Attributes): Add formal parameter
	Warnings. Update the comment on usage.
	* sinfo.adb (Is_Dispatching_Call): Update to use Flag6.
	(Is_Elaboration_Warnings_OK_Node): New routine.
	(Set_Is_Dispatching_Call): Update to use Flag6.
	(Set_Is_Elaboration_Warnings_OK_Node): New routine.
	* sinfo.ads: Attribute Is_Dispatching_Call now uses Flag6. Add new
	attribute Is_Elaboration_Warnings_OK_Node along with occurrences
	in nodes.
	(Is_Elaboration_Warnings_OK_Node): New routine along with pragma
	Inline.
	(Set_Is_Elaboration_Warnings_OK_Node): New routine along with pragma
	Inline.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update various
	sections to indicate how to suppress elaboration warnings.  Document
	switches -gnatwl and -gnatwL.
	* gnat_ugn.texi: Regenerate.

From-SVN: r254819
2017-11-16 13:17:19 +00:00
Pierre-Marie de Rodat
403bc026ac [multiple changes]
2017-11-16  Sylvain Dailler  <dailler@adacore.com>

	* sem_util.adb (Get_Enum_Lit_From_Pos): Add a condition for Pos
	lower than 0.

2017-11-16  Bob Duff  <duff@adacore.com>

	* sem_ch13.adb (Check_Expr_Constants): Avoid error message in case of
	System'To_Address.

From-SVN: r254818
2017-11-16 12:53:46 +00:00
Nathan Sidwell
c757ad4cf6 [PR c++/81060] ICE with invalid initialzer via lambda
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01323.html
	PR c++/81060
	* decl.c (xref_tag_1): Push lambda into current scope.
	* name-lookup.c (do_pushtag): Don't deal with ts_lambda here.

	PR c++81060
	* g++.dg/cpp0x/lambda/lambda-template13.C: Avoid undefined
	template using local type error.
	* g++.dg/cpp0x/pr81060.C: New.

From-SVN: r254817
2017-11-16 12:11:36 +00:00
Wilco Dijkstra
81825e283f Canonicalize constant multiplies in division
This patch implements some of the optimizations discussed in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71026.

Canonicalize x / (C1 * y) into (x * C2) / y.

This moves constant multiplies out of the RHS of a division in order
to allow further simplifications (such as (C1 * x) / (C2 * y) ->
(C3 * x) / y) and to enable more reciprocal CSEs.

2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
	    Jackson Woodruff  <jackson.woodruff@arm.com>

    gcc/
	PR tree-optimization/71026
	* match.pd: Canonicalize constant multiplies in division.

    gcc/testsuite/
	PR tree-optimization/71026
	* gcc.dg/cse_recip.c: New test.

Co-Authored-By: Jackson Woodruff <jackson.woodruff@arm.com>

From-SVN: r254816
2017-11-16 11:54:49 +00:00
Wilco Dijkstra
efeee67f4c Set default to -fomit-frame-pointer
Almost all targets add an explict -fomit-frame-pointer in the target specific
options.  Rather than doing this in a target-specific way, do this in the
generic options so it works identically across all targets.  In many cases the
target no longer needs to define TARGET_OPTION_OPTIMIZATION_TABLE, reducing
the amount of target code.

    gcc/
	* opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
	* common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
 	Remove OPT_fomit_frame_pointer entry.
	* common/config/arc/arc-common.c: Likewise.
	* common/config/arm/arm-common.c: Likewise.
	* common/config/avr/avr-common.c: Likewise.
	* common/config/c6x/c6x-common.c: Likewise.
	* common/config/cr16/cr16-common.c: Likewise.
	* common/config/cris/cris-common.c: Likewise.
	* common/config/epiphany/epiphany-common.c: Likewise.
	* common/config/fr30/fr30-common.c: Likewise.
	* common/config/frv/frv-common.c: Likewise.
	* common/config/ia64/ia64-common.c: Likewise.
	* common/config/iq2000/iq2000-common.c: Likewise.
	* common/config/lm32/lm32-common.c: Likewise.
	* common/config/m32r/m32r-common.c: Likewise.
	* common/config/mcore/mcore-common.c: Likewise.
	* common/config/microblaze/microblaze-common.c: Likewise.
	* common/config/mips/mips-common.c: Likewise.
	* common/config/mmix/mmix-common.c: Likewise.
	* common/config/mn10300/mn10300-common.c: Likewise.
	* common/config/nios2/nios2-common.c: Likewise.
	* common/config/pa/pa-common.c: Likewise.
	* common/config/pdp11/pdp11-common.c: Likewise.
	* common/config/powerpcspe/powerpcspe-common.c: Likewise.
	* common/config/riscv/riscv-common.c: Likewise.
	* common/config/rs6000/rs6000-common.c: Likewise.
	* common/config/rx/rx-common.c: Likewise.
	* common/config/s390/s390-common.c: Likewise.
	* common/config/sh/sh-common.c: Likewise.
	* common/config/sparc/sparc-common.c: Likewise.
	* common/config/tilegx/tilegx-common.c: Likewise.
	* common/config/tilepro/tilepro-common.c: Likewise.
	* common/config/v850/v850-common.c: Likewise.
	* common/config/visium/visium-common.c: Likewise.
	* common/config/xstormy16/xstormy16-common.c: Likewise.
	* common/config/xtensa/xtensa-common.c: Likewise.

    doc/
	* invoke.texi (-fomit-frame-pointer): Update documentation.

From-SVN: r254815
2017-11-16 11:44:30 +00:00
Wilco Dijkstra
9e780144ce [AArch64] Fix frame tests
Improve the AArch64 frame tests - add -f(no-)omit-frame-pointer,
update checks and add missing tests.  As a result all tests now
pass. 

    gcc/testsuite/
	* gcc.target/aarch64/lr_free_2.c: Fix test.
	* gcc.target/aarch64/spill_1.c: Likewise.
	* gcc.target/aarch64/test_frame_11.c: Likewise.
	* gcc.target/aarch64/test_frame_12.c: Likewise.
	* gcc.target/aarch64/test_frame_13.c: Likewise.
	* gcc.target/aarch64/test_frame_14.c: Likewise.
	* gcc.target/aarch64/test_frame_15.c: Likewise.
	* gcc.target/aarch64/test_frame_3.c: Likewise.
	* gcc.target/aarch64/test_frame_5.c: Likewise.
	* gcc.target/aarch64/test_frame_9.c: Likewise.

From-SVN: r254814
2017-11-16 11:30:43 +00:00
Jan Hubicka
8e43e9cd60 * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
From-SVN: r254813
2017-11-16 11:21:42 +00:00
Jan Hubicka
62003be57d cfg.c (scale_bbs_frequencies_int, [...]): Remove.
* cfg.c (scale_bbs_frequencies_int,
	cale_bbs_frequencies_gcov_type): Remove.
	* cfg.h (scale_bbs_frequencies_int,
	cale_bbs_frequencies_gcov_type): Remove.

From-SVN: r254812
2017-11-16 11:08:12 +00:00
Jan Hubicka
2a00666935 * tree-ssa-loop-manip.c
(scale_dominated_blocks_in_loop): Update to profile counts.
	(tree_transform_and_unroll_loop): Likewise.

From-SVN: r254811
2017-11-16 11:06:49 +00:00
Jan Hubicka
00fa28d1b4 tree-vect-loop-manip.c (vect_do_peeling): Do not use scale_bbs_frequencies_int.
* tree-vect-loop-manip.c (vect_do_peeling): Do not use
	scale_bbs_frequencies_int.

From-SVN: r254810
2017-11-16 11:04:40 +00:00
Jan Hubicka
6786ba1aaa * final.c (compute_alignments): Use counts rather than frequencies.
From-SVN: r254809
2017-11-16 11:03:23 +00:00
Paolo Carlini
debc8f4a0c re PR c++/70383 (Bogus error when attempting to capture a reference to function by copy)
2017-11-16  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/70383
	* g++.dg/cpp0x/lambda/lambda-70383.C: New.

From-SVN: r254808
2017-11-16 10:36:51 +00:00
Jan Hubicka
692dc070ff cfgloopanal.c: Include sreal.h
* cfgloopanal.c: Include sreal.h
	(average_num_loop_insns): Use counts and sreal for accounting.

From-SVN: r254807
2017-11-16 10:36:04 +00:00
Jan Hubicka
e7b655e8fd cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile manipulation.
* cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
	manipulation.

From-SVN: r254806
2017-11-16 10:33:48 +00:00
Pierre-Marie de Rodat
1554ed7ea4 [multiple changes]
2017-11-16  Yannick Moy  <moy@adacore.com>

	* sem_elab.adb (Include): Fix mode of parameter Curr to out.

2017-11-16  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.ads, sem_util.adb (Is_CCT_Instance): Allow calls where
	Context_Id denotes a record type.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Check_SPARK_Primitive_Operation): Enable the check in
	instantiations.

2017-11-16  Doug Rupp  <rupp@adacore.com>

	Initial gnat port to aarch64-wrs-vxworks7
	* libgnarl/s-vxwork__aarch64.ads,
	libgnat/system-vxworks7-aarch64-rtp-smp.ads,
	libgnat/system-vxworks7-aarch64.ads: New files
	* sigtramp-vxworks-target.inc (aarch64): New section.
	* tracebak.c (USE_ARM_UNWINDING): Disable for ARMARCH8A.

From-SVN: r254805
2017-11-16 10:23:12 +00:00
Pierre-Marie de Rodat
19c6e49cf4 [multiple changes]
2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb (Include): Including a node which is also a compilation
	unit terminates the search because there are no more lists to examine.

2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch8.adb (Analyze_Subprogram_Renaming): Ensure that a renaming
	declaration does not define a primitive operation of a tagged type for
	SPARK.
	(Check_SPARK_Primitive_Operation): New routine.

2017-11-16  Arnaud Charlet  <charlet@adacore.com>

	* libgnat/a-elchha.adb (Last_Chance_Handler): Display Argv (0) in
	message when using -E binder switch.

2017-11-16  Piotr Trojanek  <trojanek@adacore.com>

	* errout.ads: Fix minor typo in comment.

From-SVN: r254804
2017-11-16 10:12:15 +00:00
Pierre-Marie de Rodat
6361db43b2 [multiple changes]
2017-11-16  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Process_Subtype): If the subtype indication does not
	syntactically denote a type, return Any_Type to prevent subsequent
	compiler crashes or infinite loops.

2017-11-16  Steve Baird  <baird@adacore.com>

	* lib-writ.adb: Fix bug which causes Program_Error to be raised in some
	cases when writing out a .ali file when a Rename_Pragma pragma is in
	effect.
	* lib-writ.adb (Write_Unit_Information): Replace call to
	Pragma_Name_Unmapped with call to Pragma_Name.

2017-11-16  Gary Dismukes  <dismukes@adacore.com>

	* sem_elab.adb: Minor typo fixes.

2017-11-16  Justin Squirek  <squirek@adacore.com>

	* sem_res.adb (Resolve_Allocator): Correct warning messages and make
	them more explicit.

From-SVN: r254803
2017-11-16 09:56:46 +00:00
Pierre-Marie de Rodat
8dce7371d3 [multiple changes]
2017-11-16  Hristian Kirtchev  <kirtchev@adacore.com>

	* atree.ads (Nkind_In): Add 10 and 11 parameter versions.
	* checks.adb (Install_Primitive_Elaboration_Check): Mark the setting of
	the elaboration flag as elaboration code.
	* einfo.adb (Contract): Update the comments.
	(Ignore_SPARK_Mode_Pragmas): Update the comments.
	(SPARK_Aux_Pragma): Update the comments.
	(SPARK_Aux_Pragma_Inherited): Update the comments.
	(SPARK_Pragma): Update the comments. The attribute now applies
	to all types and abstract states.
	(SPARK_Pragma_Inherited): Update the comments. The attribute now
	applies to all types and abstract states.
	(Set_Contract): Update the comments.
	(Set_Ignore_SPARK_Mode_Pragmas): Update the comments.
	(Set_SPARK_Aux_Pragma): Update the comments.
	(Set_SPARK_Aux_Pragma_Inherited): Update the comments.
	(Set_SPARK_Pragma): Update the comments. The attribute now applies to
	all types and abstract states.
	(Set_SPARK_Pragma_Inherited): Update the comments. The attribute now
	applies to all types and abstract states.
	(Write_Field40_Name): Add output for SPARK_Pragma when it appears on a
	type and abstract states.
	* einfo.ads: Update the documentation of attributes SPARK_Pragma and
	SPARK_Pragma_Inherited.  Both of them now apply to all types and
	abstract states.
	* exp_util.adb (Set_Elaboration_Flag): Mark the setting of the
	elaboration flag as elaboration code.
	* sem_ch3.adb: Add with and use clauses for Sem_Elab.
	(Analyze_Full_Type_Declaration): Set the SPARK_Mode of the type. Record
	a derived type for later processing by the ABE mechanism.
	(Analyze_Incomplete_Type_Decl): Set the SPARK_Mode of the type.
	(Analyze_Private_Extension_Declaration): Set the SPARK_Mode of the
	type.
	* sem_ch7.adb (Analyze_Private_Type_Declaration): Set the SPARK_Mode of
	the type.
	* sem_elab.adb: Define the term "early call region".  Update the
	terminology for "scenario" and "target".  Update the architecture of
	the ABE mechanism.  Update the steps which must be taken when adding a
	new scenario.  Update the section on debugging ABE issues.  Add new
	hash tables Early_Call_Regions and Recorded_SPARK_Scenarios.  Add new
	table SPARK_Scenarios.  Hash table Elaboration_Context is now
	Elaboration_Statuses.  The majority of Process_xxx routines have been
	updated to better reflect their role.
	(Add_Unit): Reimplemented.
	(Check_Elaboration_Constituent): New routine.
	(Check_Elaboration_Scenarios): Verify previously recorded scenarios for
	conditional ABE issues. Verify previously recorded SPARK scenarios.
	(Check_SPARK_Derived_Type): New routine.
	(Check_SPARK_Instantiation): New routine.
	(Check_SPARK_Scenario): New routine.
	(Check_SPARK_Refined_State_Pragma): New routine.
	(Early_Call_Region): New routine.
	(Elaboration_Status): New routine.
	(Ensure_Prior_Elaboration): Add new formal parameter Prag_Nam. The
	implicit Elabotate[_All] pragma is now specified via Prag_Nam.
	(Find_Early_Call_Region): New routine.
	(Info_Scenario): Add output for refinement constituents.
	(Is_Recorded_SPARK_Scenario): New routine.
	(Is_Suitable_SPARK_Derived_Type): New routine.
	(Is_Suitable_SPARK_Instantiation): New routine.
	(Is_Suitable_SPARK_Refined_State_Pragma): New routine.
	(Is_Visited_Body): New routine.
	(Kill_Elaboration_Scenario): Reimplemented.
	(Output_Active_Scenarios): Add output for pragma Refined_State.
	(Output_SPARK_Refined_State_Pragma): New routine.
	(Process_Conditional_ABE_Call): Remove the use of -gnatd.v. The effect
	is now achieved by different means.
	(Process_Conditional_ABE_Call_SPARK): Verify that a call which precedes
	the subprogram body appears within the early call region of the body.
	Either ensure the prior elaboration of external subprograms or verify
	that the context meets the suitable elaboration requirement.
	(Process_Conditional_ABE_Instantiation_SPARK): New routine.
	(Record_Elaboration_Scenario): Reimplement the portion which enforces
	the level restrictions of the static model. Add support for SPARK
	scenarios.
	(Record_SPARK_Elaboration_Scenario): New routine.
	(Reset_Visited_Bodies): New routine.
	(Set_Early_Call_Region): New routine.
	(Set_Elaboration_Status): New routine.
	(Set_Is_Recorded_SPARK_Scenario): New routine.
	(Update_Elaboration_Scenario): Reimplemented.
	* sem_elab.ads: Add new subtype Library_Or_Instantiation_Level.
	* sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Save the pragma
	for examination by the ABE Processing phase.
	(Create_Abstract_State): Save the SPARK_Mode from the context.
	* sem_util.adb (Is_Non_Preelaborable_Construct): New routine.
	* sem_util.ads (Is_Non_Preelaborable_Construct): New routine.
	* sinfo.adb (Is_Elaboration_Code): New routine.
	(Set_Is_Elaboration_Code): New routine.
	(Nkind_In): Add 10 and 11 parameter versions.
	* sinfo.ads: Add new attribute Is_Elaboration_Code along with
	occurrences in nodes.
	(Is_Elaboration_Code): New routine along with pragma Inline.
	(Set_Is_Elaboration_Code): New routine along with pragma Inline.
	(Nkind_In): Add 10 and 11 parameter versions.

2017-11-16  Justin Squirek  <squirek@adacore.com>

	* sem.adb (Analyze): Remove requirement that the original node of N be
	an operator in the case that analysis on the node yields the relevant
	operator - so prefer it instead.

From-SVN: r254802
2017-11-16 09:50:19 +00:00
Bob Duff
d00301ecf4 sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access formal must not have a designated type that...
2017-11-16  Bob Duff  <duff@adacore.com>

	* sem_ch6.adb (Create_Extra_Formals): The type of the BIP_Object_Access
	formal must not have a designated type that is the full view coming
	from a limited-with'ed package.
	* sem_util.adb,sem_util.ads (Incomplete_View_From_Limited_With): New
	function called from sem_ch6.
	* sem_ch5.adb (Analyze_Assignment): Treat user-defined concatenation
	specially for b-i-p cases.

From-SVN: r254801
2017-11-16 09:43:24 +00:00
Chung-Ju Wu
36f287603b Provide more constraints for future use.
gcc/
	* config/nds32/constraints.md: Provide more constraints.
	* config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
	REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
	support constraints usage.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r254800
2017-11-16 09:38:11 +00:00
Chung-Ju Wu
f968dc67fa Remove the useless constant UNSPEC_VOLATILE_FUNC_RETURN.
gcc/
	* config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.

From-SVN: r254799
2017-11-16 09:23:12 +00:00
Chung-Ju Wu
aa4b851ca2 Add new options: -mext-perf, -mext-perf2, -mext-string.
gcc/
	* config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
	* config/nds32/nds32.opt: Refine the layout.
	* config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
	TARGET_EXT_STRING): Support new options.
	* config/nds32/nds32.h: Likewise.
	* config/nds32/nds32.md: Likewise.
	* config/nds32/nds32-predicates.c: Likewise.
	* config/nds32/constraints.md: Likewise.
	* common/config/nds32/nds32-common.c: Likewise.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r254798
2017-11-16 09:15:21 +00:00
Julia Koval
bde4b3ddd6 Fix GFNI check which didn't work properly in gfni+sse case
gcc/
	PR target/82983
	* config/i386/gfniintrin.h: Add sse check.
	* config/i386/i386.c (ix86_expand_builtin): Fix gfni check.

From-SVN: r254797
2017-11-16 06:14:54 +00:00
Julia Koval
fca51879ff Enable VBMI2 support [1/7]
gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
	OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
	(ix86_handle_option): Handle -mavx512vbmi2.
	* config/i386/cpuid.h: Add bit_AVX512VBMI2.
	* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
	* config/i386/i386-c.c (__AVX512VBMI2__): New.
	* config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
	(ix86_valid_target_attribute_inner_p): Ditto.
	* config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
	* config/i386/i386.opt (mavx512vbmi2): New option.
	* doc/invoke.texi: Add new option.

From-SVN: r254796
2017-11-16 06:07:00 +00:00
Julia Koval
e0c31a15fa GFNI enabling [4/4]
gcc/
	* config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
	_mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
	_mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
	_mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
	_mm512_gf2p8mul_epi8): New intrinsics.
	* config/i386/i386-builtin-types.def
	(V64QI_FTYPE_V64QI_V64QI): New type.
	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
	__builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
	__builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
	__builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
	* config/i386/sse.md (vgf2p8mulb_*): New pattern.
	* config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
gcc/testsuite/
	* gcc.target/i386/avx512f-gf2p8mulb-2.c: New runtime tests.
	* gcc.target/i386/avx512vl-gf2p8mulb-2.c: Ditto.
	* gcc.target/i386/gfni-1.c: Add tests for GF2P8MUL.
	* gcc.target/i386/gfni-2.c: Ditto.
	* gcc.target/i386/gfni-3.c: Ditto.
	* gcc.target/i386/gfni-4.c: Ditto.

From-SVN: r254795
2017-11-16 05:59:51 +00:00
Jason Merrill
00a2022a67 * include/std/numeric (gcd): Fix typo.
From-SVN: r254794
2017-11-16 00:13:16 -05:00
GCC Administrator
d9e8770da6 Daily bump.
From-SVN: r254793
2017-11-16 00:16:18 +00:00
Uros Bizjak
c078d74657 i386.c (x86_print_call_or_nop): Emit 5 byte nop explicitly as a stream of bytes.
* config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
	explicitly as a stream of bytes.

From-SVN: r254788
2017-11-15 23:26:46 +01:00
Bill Schmidt
3ef9e1ec4b altivec.h (vec_xst_be): New #define.
[gcc]

2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/altivec.h (vec_xst_be): New #define.
	* config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
	and externalize from *altivec_vperm_<mode>_internal.
	* config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
	instantiation.
	(XL_BE_V8HI): Likewise.
	(XL_BE_V4SI): Likewise.
	(XL_BE_V4SI): Likewise.
	(XL_BE_V2DI): Likewise.
	(XL_BE_V4SF): Likewise.
	(XL_BE_V2DF): Likewise.
	(XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
	all array entries with these keys: VSX_BUILTIN_VEC_XL,
	VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
	VSX_BUILTIN_VEC_XST_BE.
	* config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
	(altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
	built-ins.
	(altivec_init_builtins): Replace conditional calls to def_builtin
	for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
	__builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
	with unconditional calls.  Remove calls to def_builtin for
	__builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
	__builtin_vec_xst_be.
	* config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
	to define_expand, and add alternate RTL generation for P8.
	(*vsx_ld_elemrev_v8hi_internal): New define_insn based on
	vsx_ld_elemrev_v8hi.
	(vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
	add alternate RTL generation for P8.
	(*vsx_ld_elemrev_v16qi_internal): New define_insn based on
	vsx_ld_elemrev_v16qi.
	(vsx_st_elemrev_v8hi): Convert define_insn
	to define_expand, and add alternate RTL generation for P8.
	(*vsx_st_elemrev_v8hi_internal): New define_insn based on
	vsx_st_elemrev_v8hi.
	(vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
	add alternate RTL generation for P8.
	(*vsx_st_elemrev_v16qi_internal): New define_insn based on
	vsx_st_elemrev_v16qi.

[gcc/testsuite]

2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/swaps-p8-26.c: Modify expected code
	generation.

From-SVN: r254787
2017-11-15 21:21:32 +00:00
Martin Sebor
cb8e798279 PR testsuite/82988 - g++.dg/cpp0x/lambda/lambda-switch.C fail
gcc/testsuite/ChangeLog:

	PR testsuite/82988
	* g++.dg/cpp0x/lambda/lambda-switch.C: Prune unimportant warning.

From-SVN: r254786
2017-11-15 13:57:10 -07:00
Ville Voutilainen
865a86a0fd Fix gcd breakage.
* include/std/numeric (gcd): Use remove_cv_t, not remove_cv.

From-SVN: r254785
2017-11-15 22:42:58 +02:00
H.J. Lu
3b26ae8285 Move gcc/testsuite entries to gcc/testsuite/ChangeLog
From-SVN: r254784
2017-11-15 11:34:26 -08:00
H.J. Lu
348188bf59 i386: Add X86_TUNE_EMIT_VZEROUPPER
Add X86_TUNE_EMIT_VZEROUPPER to indicate if vzeroupper instruction should
be inserted before a transfer of control flow out of the function.  It is
turned on by default unless we are tuning for KNL.  Users can always use
-mzeroupper or -mno-zeroupper to override X86_TUNE_EMIT_VZEROUPPER.

gcc/

	PR target/82990
	* config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
	TARGET_AVX512ER check.
	(ix86_option_override_internal): Set MASK_VZEROUPPER if
	neither -mzeroupper nor -mno-zeroupper is used and
	TARGET_EMIT_VZEROUPPER is set.
	* config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
	* config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.

gcc/testsuite/

	PR target/82990
	* gcc.target/i386/pr82942-2.c: Add -mtune=knl.
	* gcc.target/i386/pr82990-1.c: New test.
	* gcc.target/i386/pr82990-2.c: Likewise.
	* gcc.target/i386/pr82990-3.c: Likewise.
	* gcc.target/i386/pr82990-4.c: Likewise.
	* gcc.target/i386/pr82990-5.c: Likewise.
	* gcc.target/i386/pr82990-6.c: Likewise.
	* gcc.target/i386/pr82990-7.c: Likewise.

From-SVN: r254783
2017-11-15 11:30:58 -08:00
Will Schmidt
41e181973e rs6000.c (rs6000_gimple_fold_builtin): Add support for folding of vector compares.
2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>

[gcc]

	* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
	folding of vector compares.
	(fold_build_vec_cmp): New helper function.
	(fold_compare_helper): New helper function.
	(builtin_function_type): Add compare builtins to the list of functions
	having unsigned arguments.  Cosmetic updates to comment indentation.
	* config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
	the not+eq combination.

[testsuite]

	* gcc.target/powerpc/builtins-3-p9.c: Add -O1, update
	expected codegen checks.
	* gcc.target/powerpc/vec-cmp-sel.c: Mark vars as volatile.
	* gcc.target/powerpc/vsu/vec-cmpne-0.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-1.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-2.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-3.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-4.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-5.c: Add -O1.
	* gcc.target/powerpc/vsu/vec-cmpne-6.c: Add -O1.

From-SVN: r254782
2017-11-15 19:26:21 +00:00
Jonathan Wakely
4e6c429837 Minor improvements to Filesystem tests
* testsuite/27_io/filesystem/iterators/directory_iterator.cc: Leave
	error_code unset.
	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
	Check for past-the-end before dereferencing.
	* testsuite/experimental/filesystem/iterators/
	recursive_directory_iterator.cc: Likewise.

From-SVN: r254781
2017-11-15 18:22:43 +00:00
Steven G. Kargl
54b6c06b49 re PR fortran/78240 (ICE in match_clist_expr, at fortran/decl.c:728)
2017-11-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/78240
	gfortran.dg/pr78240.f90: Prune run-on errors.

From-SVN: r254780
2017-11-15 18:14:14 +00:00