Commit Graph

158066 Commits

Author SHA1 Message Date
Jakub Jelinek
a7b1ce0405 re PR c++/79228 ('i' suffix for __complex__ extension interferes with C++14 UDLs for std::complex)
PR c++/79228
	* expr.c (interpret_float_suffix): Avoid memcmp.
	(interpret_int_suffix): Likewise.  Don't check for if.

From-SVN: r255434
2017-12-05 22:00:15 +01:00
Mike Stump
186d43a78e Remove $tmpdir from -dumpbase, we should be in $tmpdir.
From-SVN: r255433
2017-12-05 19:26:56 +00:00
Matthew Gretton-Dann
14b5d8ec2b dump-noaddr.x: Generate dump files in tmpdir.
2017-12-05  Matthew Gretton-Dann  <matthew.gretton-dann@arm.com>

	* gcc.c-torture/unsorted/dump-noaddr.x: Generate dump files in
	tmpdir.

From-SVN: r255432
2017-12-05 19:16:52 +00:00
Steve Ellcey
6981f098df thunderx2-t99.md (thunderx2t99_branch): Add trap to reservation.
2017-12-05  Steve Ellcey  <sellcey@cavium.com>

	* config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
	to reservation.
	(thunderx2t99_nothing): New insn reservation.
	(thunderx2t99_mrs): New insn reservation.
	(thunderx2t99_multiple): New insn reservation.
	(thunderx2t99_alu_basi): Add bfx to reservation.
	(thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.

From-SVN: r255431
2017-12-05 18:47:00 +00:00
Jason Merrill
53943619eb PR c++/82331 - ICE with variadic partial specialization of auto
* pt.c (unify) [TEMPLATE_PARM_INDEX]: Set processing_template_decl
	around call to tsubst.

From-SVN: r255430
2017-12-05 13:05:23 -05:00
Nathan Sidwell
ea9e71de65 [PR C++/83287] Mark lookup for keeping
https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00242.html
	PR c++/83287
	* tree.c (build_min): Check CAST_EXPR arg for OVERLOADs.

	* g++.dg/lookup/pr83287.C: New.

From-SVN: r255429
2017-12-05 17:29:58 +00:00
Ramana Radhakrishnan
7109d22477 [Patch ARM] Fix probe_stack constraint.
The probe_stack pattern uses r0 as a fixed register. This can cause issues if we have auto-increment instructions coming out that have r0 as the base register. 

Tested with a bootstrap and regression run. richi reports that the original issue was fixed in the run. I did consider whether probe_stack_range was affected but it all comes back to probe_stack pattern so I think we are ok.

I don't have a testcase that seems to provoke this but it seems to be default on most distributions so I'm expecting the testcoverage to come from there.

Applied.

Ramana

PR target/82248

* config/arm/arm.md (probe_stack) : Use the 'o' constraint.

From-SVN: r255428
2017-12-05 16:32:55 +00:00
Jakub Jelinek
26c2efbc5a re PR testsuite/83289 (i386/sse2-init-v2di-2.c, i386/avx256-unaligned-load-1.c, i386/avx256-unaligned-store-*.c fails)
PR testsuite/83289
	* gcc.target/i386/avx256-unaligned-load-1.c: Adjust for -dp
	alternative numbers being 0 based instead of former 1 based.
	* gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
	* gcc.target/i386/avx256-unaligned-store-2.c: Likewise.
	* gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
	* gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
	* gcc.target/i386/sse2-init-v2di-2.c: Likewise.

From-SVN: r255427
2017-12-05 17:17:09 +01:00
Bin Cheng
23ffbafe3a tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from tree-ssa-pre.c::remove_dead_inserted_code.
* tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
	tree-ssa-pre.c::remove_dead_inserted_code.
	* tree-ssa-dce.h: New file.
	* tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
	(remove_dead_inserted_code): Move and rename to function
	tree-ssa-dce.c::simple_dce_from_worklist.
	(pass_pre::execute): Update use.

From-SVN: r255426
2017-12-05 15:42:58 +00:00
Jason Merrill
0382bcfcda Correct noexcept mismatch in declarations.
2017-12-05  Jason Merrill  <jason@redhat.com>
	    Jonathan Wakely  <jwakely@redhat.com>

	* include/bits/fs_fwd.h (copy, copy_file): Remove noexcept.
	(permissions): Add noexcept.
	* include/bits/fs_ops.h (permissions): Add noexcept.
	* libsupc++/eh_throw.cc (__cxa_init_primary_exception): Add
	_GLIBCXX_NOTHROW.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>

From-SVN: r255425
2017-12-05 15:23:26 +00:00
Richard Biener
9824a520b2 re PR tree-optimization/83277 ([graphite] Wrong code w/ -O2 -floop-nest-optimize)
2017-12-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/83277
	* graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
	to code-gen liveout vars.

	* gcc.dg/graphite/pr83277.c: New testcase.

From-SVN: r255424
2017-12-05 15:10:23 +00:00
Richard Sandiford
6acc594827 [AArch64] Fix some define_insn_and_split conditions
The split conditions for aarch64_simd_bsldi_internal and
aarch64_simd_bsldi_alt were:

  "&& GP_REGNUM_P (REGNO (operands[0]))"

But since they (deliberately) can be split before reload, the operand
matched by register_operand can be a SUBREG rather than a REG.  This
triggered a boostrap failure building libgcc with rtl checking enabled.

While checking other define_insn_and_splits for the same thing,
I noticed a couple of SIMD ones were missing the leading "&&",
meaning that they would trigger even without TARGET_SIMD.  That
shouldn't matter in practice, since combine should never end up
generating matching rtl, but...

2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
	(aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
	(aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
	split condition.

From-SVN: r255423
2017-12-05 14:40:37 +00:00
Max Filippov
8c9ee176a6 gcc: xtensa: enable address sanitizer
gcc/
2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>

	* config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
	function.
	(TARGET_ASAN_SHADOW_OFFSET): New macro definition.
	* config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
	ASAN is enabled.

From-SVN: r255420
2017-12-05 14:17:35 +00:00
Jakub Jelinek
ac550b9a0e re PR testsuite/83281 (libgomp.oacc-c-c++-common/reduction-cplx-flt.c and reduction-cplx-dbl.c fail starting with r255335)
PR testsuite/83281
	* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-flt.c (main): Use
	j suffix instead of i.
	* testsuite/libgomp.oacc-c-c++-common/reduction-cplx-dbl.c (main):
	Likewise.

From-SVN: r255418
2017-12-05 14:34:41 +01:00
Jakub Jelinek
240cf3e5e1 re PR tree-optimization/83283 (Casting from boolean to unsigned char to enum returns incorrect results)
PR tree-optimization/83283
	* g++.dg/torture/pr83283.C: New test.

From-SVN: r255417
2017-12-05 14:33:52 +01:00
Richard Biener
1b6546cc4e timevar.def (TV_TREE_RECIP, [...]): Add.
2017-12-05  Richard Biener   <rguenther@suse.de>

	* timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL):
	Add.
	* tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
	(pass_data_cse_sincos): Use TV_TREE_SINCOS.
	(pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.

From-SVN: r255415
2017-12-05 13:19:45 +00:00
Pierre-Marie de Rodat
40c21e918d sem_util.adb (Contains_Refined_State): Remove.
gcc/ada/

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb (Contains_Refined_State): Remove.

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications, case Predicate): A
	predicate cannot apply to a formal type.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.ads: Fix typos.

2017-12-05  Jerome Lambourg  <lambourg@adacore.com>

	* libgnarl/s-taprop__qnx.adb: Better detect priority ceiling bug in
	QNX.  At startup, the first mutex created has a non-zero ceiling
	priority whatever its actual policy. This makes some tests fail
	(c940013 for example).

2017-12-05  Bob Duff  <duff@adacore.com>

	* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Call
	Expand_Cleanup_Actions for N_Extended_Return_Statement.
	* exp_ch7.adb (Expand_Cleanup_Actions): Handle
	N_Extended_Return_Statement by transforming the statements into a
	block, and (indirectly) calling Expand_Cleanup_Actions on the block.
	It's too hard for Expand_Cleanup_Actions to operate directly on the
	N_Extended_Return_Statement, because it has a different structure than
	the other node kinds that Expand_Cleanup_Actions.
	* exp_util.adb (Requires_Cleanup_Actions): Add support for
	N_Extended_Return_Statement.  Change "when others => return False;" to
	"when others => raise ...;" so it's clear what nodes this function
	handles.  Use named notation where appropriate.
	* exp_util.ads: Mark incorrect comment with ???.

2017-12-05  Javier Miranda  <miranda@adacore.com>

	* exp_ch9.adb (Install_Private_Data_Declarations): Add missing
	Debug_Info_Needed decoration of internally generated discriminal
	renaming declaration.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

	* exp_unst.adb (Unnest_Subprogram): Add handling of 'Access on
	nested subprograms.

2017-12-05  Sergey Rybin  <rybin@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Add description of '--ignore'
	option for gnatmetric, gnatpp, gnat2xml, and gnattest.

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

	* sem_util.adb (Contains_Refined_State): Remove.

2017-12-05  Piotr Trojanek  <trojanek@adacore.com>

	* rtsfind.ads: Add new enumeration literals: RE_Clock_Time (for
	Ada.Real_Time.Clock_Time) and RO_CA_Clock_Time (for
	Ada.Calendar.Clock_Time).

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Is_Private_Overriding): If the candidate private
	subprogram is overloaded, scan the list of homonyms in the same
	scope, to find the inherited operation that may be overridden
	by the candidate.
	* exp_ch11.adb, exp_ch7.adb: Minor reformatting.

2017-12-05  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_N_Extended_Return_Statement): If the
	Init_Assignment is rewritten, we need to set Assignment_OK on the new
	node.  Otherwise, we will get spurious errors when initializing via
	assignment statement.

gcc/testsuite/

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

	* gnat.dg/private_overriding.adb: New testcase.

From-SVN: r255414
2017-12-05 12:45:35 +00:00
Pierre-Marie de Rodat
b91f986b2d [multiple changes]
2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_elab.adb: Update the terminology and switch sections.
	(Check_SPARK_Model_In_Effect): New routine.
	(Check_SPARK_Scenario): Verify the model in effect for SPARK.
	(Process_Conditional_ABE_Call_SPARK): Verify the model in effect for
	SPARK.
	(Process_Conditional_ABE_Instantiation_SPARK): Verify the model in
	effect for SPARK.
	(Process_Conditional_ABE_Variable_Assignment_SPARK): Verify the model
	in effect for SPARK.

2017-12-05  Nicolas Setton  <setton@adacore.com>

	* terminals.c (__gnat_setup_child_communication): As documented,
	__gnat_setup_child_communication should not terminate - it is intended
	to be used as the child process of a call to fork().  However, execvp
	might actually return in some cases, for instance when attempting to
	run a 32-bit binary on a 64-bit Linux distribution when the
	compatibility packages are not installed. In these cases, exit the
	program to conform to the documentation.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

	* libgnat/s-tsmona.adb: Fix for oversight in the tsmona interface
	update.

2017-12-05  Gary Dismukes  <dismukes@adacore.com>

	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Minor typo fix
	and reformatting.
	* gnat_ugn.texi: Regenerate.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

	* sem_util.adb (Set_Convention): Always clear Can_Use_Internal_Rep
	on access to subprogram types with foreign convention.

2017-12-05  Yannick Moy  <moy@adacore.com>

	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix User's
	Guide description of default settings of warnings.

From-SVN: r255413
2017-12-05 12:22:46 +00:00
Pierre-Marie de Rodat
967947ed6b [multiple changes]
2017-12-05  Olivier Hainque  <hainque@adacore.com>

	* s-dwalin.adb (Read_And_Execute_Isn): Adjust test checking for the end
	of section. Add comments explaining the rationale of the computation.

2017-12-05  Bob Duff  <duff@adacore.com>

	* exp_ch11.adb: Minor refactoring.

2017-12-05  Hristian Kirtchev  <kirtchev@adacore.com>

	* debug.adb: Add debug switches d_a, d_e, and d_p, along with
	documentation.
	(Set_Underscored_Debug_Flag): New routine.
	* debug.ads: Add the flags for all underscore switches.
	(Set_Underscored_Debug_Flag): New routine.
	* einfo.adb: Flag303 is now Suppress_Elaboration_Warnings.
	(Suppress_Elaboration_Warnings): New routine.
	(Set_Suppress_Elaboration_Warnings): New routine.
	(Write_Entity_Flags): Add output for Suppress_Elaboration_Warnings.
	* einfo.ads: Add new flag Suppress_Elaboration_Warnings.
	(Suppress_Elaboration_Warnings): New routine along with pragma Inline.
	(Set_Suppress_Elaboration_Warnings): New routine along with pragma
	Inline.
	* exp_ch3.adb (Build_Init_Procedure): Restore the behavior of the
	legacy elaboration model.
	(Default_Initialize_Object): Restore the behavior of the legacy
	elaboration model.
	* exp_ch9.adb: Add with and use clause for Sem_Elab.
	(Build_Task_Activation_Call): Restore the behavior of the legacy
	elaboration model.
	* frontend.adb (Frontend): Restore the behavior of the legacy
	elaboration model.
	* opt.ads: Add new flags Legacy_Elaboration_Checks and
	Relaxed_Elaboration_Checks, along with documentation.
	* sem_attr.adb (Analyze_Access_Attribute): Restore the behavior of the
	legacy elaboration model.
	* sem_ch5.adb (Analyze_Assignment): Restore the behavior of the legacy
	elaboration model.
	* sem_ch7.adb (Analyze_Package_Declaration): Restore the behavior of
	the legacy elaboration model.
	* sem_ch8.adb (Attribute_Renaming): Restore the behavior of the legacy
	elaboration model.
	* sem_ch12.adb (Analyze_Instance_And_Renamings): Restore the behavior
	of the legacy elaboration model.
	(Analyze_Package_Instantiation): Restore the behavior of the legacy
	elaboration model.
	(Analyze_Subprogram_Instantiation): Restore the behavior of the legacy
	elaboration model.
	* sem_elab.adb: Update the documentation of the Processing phase.
	Update the documentation on elaboration-related compilation
	switches.  Update the documentation on adding a new target.  Add
	Processing_Attributes which represent the state of the Processing
	phase.  Resurrect the previous elaboration model as "legacy elaboration
	model".
	(Build_Call_Marker): This routine does not function when the legacy
	elaboration model is in effect. Do not consider entry calls and requeue
	statements when debug flag d_e is in effect. Do not consider calls to
	subprograms which verify the runtime semantics of certain assertion
	pragmas when debug flag d_p is in effect.
	(Build_Variable_Reference_Marker): This routine does not function when
	the legacy elaboration model is in effect.
	(Check_Elaboration_Scenarios): This routine does not function when the
	legacy elaboration model is in effect.
	(Ensure_Prior_Elaboration): The various flags have now been replaced
	with a state. Do not generate implicit Elaborate[_All] pragmas when
	their creation has been suppressed.
	(Ensure_Prior_Elaboration_Static): The with clause is marked based on
	the requested pragma, not on the nature of the scenario.
	(In_External_Context): Removed.
	(Is_Assertion_Pragma_Target): New routine.
	(Is_Potential_Scenario): Stop the traversal of a task body when
	reaching an accept or select statement, and debug switch d_a is in
	effect.
	(Kill_Elaboration_Scenario): This routine does not function when the
	legacy elaboration model is in effect.
	(Process_Activation_Generic): The various flags have now been replaced
	with a state.
	(Process_Conditional_ABE): The various flags have now been replaced
	with a state.
	(Process_Conditional_ABE_Access): The various flags have now been
	replaced with a state.
	(Process_Conditional_ABE_Activation_Impl): The various flags have now
	been replaced with a state. Do not process an activation call which
	activates a task whose type is defined in an external instance, and
	debug switch dL is in effect. Suppress the generation of implicit
	Elaborate[_All] pragmas once a conditional ABE check has been
	installed.
	(Process_Conditional_ABE_Call): The various flags have now been
	replaced with a state. Do not process a call which invokes a subprogram
	defined in an external instance, and debug switch dL is in effect.
	(Process_Conditional_ABE_Call_Ada): The various flags have now been
	replaced with a state. Suppress the generation of implicit
	Elaborate[_All] pragmas once a conditional ABE check has been
	installed.
	(Process_Conditional_ABE_Call_SPARK): The various flags have now been
	replaced with a state.
	(Process_Conditional_ABE_Instantiation): The various flags have now
	been replaced with a state.
	(Process_Conditional_ABE_Instantiation_Ada): The various flags have now
	been replaced with a state. Suppress the generation of implicit
	Elaborate[_All] pragmas once a conditional ABE check has been
	installed.
	(Process_Conditional_ABE_Instantiation_SPARK): The various flags have
	now been replaced with a state.
	(Process_Guaranteed_ABE_Activation_Impl): The various flags have now
	been replaced with a state.
	(Process_Single_Activation): The various flags have now been replaced
	with a state.
	(Record_Elaboration_Scenario): This routine does not function when the
	legacy elaboration model is in effect.
	(Traverse_Body): The various flags have now been replaced with a state.
	* sem_elab.ads: Resurrect the pre-18.x elaboration model as "legacy
	elaboration model".
	* sem_prag.adb (Analyze_Pragma): Restore the behavior of the legacy
	elaboration model.
	* sem_res.adb (Resolve_Call): Restore the behavior of the legacy
	elaboration model.
	(Resolve_Entity_Name): Restore the behavior of the legacy elaboration
	model.
	* sem_util.adb (Mark_Elaboration_Attributes): This routine does not
	function when the legacy elaboration model is in effect.
	* sinfo.adb (Is_Known_Guaranteed_ABE): Update the assertion check.
	(No_Elaboration_Check): New routine.
	(Set_Is_Known_Guaranteed_ABE): Update the assertion check.
	(Set_No_Elaboration_Check): New routine.
	* sinfo.ads: Update the documentation of flag Is_Known_Guaranteed_ABE
	along with occurrences in nodes.  Add new flag No_Elaboration_Check
	along with occurrences in nodes.
	* switch-c.adb (Scan_Front_End_Switches): Add processing for debug
	switches with underscores.  Add processing for switches -gnatH and
	-gnatJ.
	* usage.adb (Usage): Add output for switches -gnatH and -gnatJ.
	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update the
	documentation to include the legacy and relaxed elaboration models.
	* gnat_ugn.texi: Regenerate.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

	* doc/gnat_ugn/platform_specific_information.rst: Minor edit.
	Improve doc on required packages for linux 32bits.

2017-12-05  Doug Rupp  <rupp@adacore.com>

	* tracebak.c (ppc64-vx7): USE_GCC_UNWINDER for 64bit.

2017-12-05  Javier Miranda  <miranda@adacore.com>

	* checks.adb (Generate_Range_Check): Force evaluation of the node in
	more cases.  This patch was written to improve the code generated by
	the CCG compiler but it is enabled for all targets since double
	evaluation is always a potential source of inefficiency.

2017-12-05  Gary Dismukes  <dismukes@adacore.com>

	* doc/gnat_ugn/gnat_utility_programs.rst: Remove reference to obsolete
	-fdump-xref switch.

From-SVN: r255412
2017-12-05 12:12:22 +00:00
Pierre-Marie de Rodat
6cbd45e406 [multiple changes]
2017-12-05  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use the SLOC of the
	iteration scheme throughout, except for the new loop statement(s).

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_aggr.adb (Gen_Assign): Do not analyze the expressionn of the
	assignment if it is part of an Iterated_Component_Association: the
	analysis needs to take place once the loop structure is analyzed and
	the loop parameter made visible, because references to it typically
	appear in the corresponding expression.  This is necessary if the
	expression is an aggregate, because previous pre-analysis of the
	expression does not handle nested aggregates properly.

2017-12-05  Bob Duff  <duff@adacore.com>

	* sem_res.adb (Resolve_Allocator): Avoid coextension processing for an
	allocator that is the expansion of a build-in-place function call.

2017-12-05  Olivier Hainque  <hainque@adacore.com>

libgnat/
	* s-trasym__dwarf.adb (spec of Module_Name.Get): Instead of
	possibly adjusting the lookup address by a load address, expect
	a extra argument through which the load address can be conveyed
	separately.
	(Multi_Module_Symbolic_Traceback): Adjust accordingly. Pass the
	retrieved load address to Init_Module.
	* s-tsmona__linux.adb (Get): Honor the new interface.
	* s-tsmona__mingw.adb (Get): Likewise.
	* s-dwalin.ads: Adjust comments to be explicit about which
	addresses are from module info and which are run-time addresses,
	offsetted by the module load address.
	* s-dwalin.adb (Set_Load_Address): Simply set C.Load_Slide.
	Do not alter the module Low and High (relative) addresses.
	(Is_Inside): Improve documentation regarding the kinds of addresses
	at hand and correct the test.
	(Symbolic_Traceback): Use separate variables with explicit names
	for the address in traceback (run-time value) and the address to
	lookup within the shared object (module-relative). Adjust the
	computation of address passed to Symbolic_Address for symbolization.

From-SVN: r255411
2017-12-05 11:58:13 +00:00
Pierre-Marie de Rodat
f4ac86dd5c [multiple changes]
2017-12-05  Arnaud Charlet  <charlet@adacore.com>

	* opt.ads (Expand_Nonbinary_Modular_Ops): New flag.
	* exp_ch4.adb (Expand_Nonbinary_Modular_Op): Use
	Expand_Nonbinary_Modular_Ops instead of Modify_Tree_For_C, so that
	other back-ends can also benefit from the front-end expansion. Remove
	test for Modify_Tree_For_C in all callers to better share code.
	* gnat1drv.adb (Adjust_Global_Switches): Set
	Expand_Nonbinary_Modular_Ops when generating C code.

2017-12-05  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_Formal_Container_Loop): Ensure that the loop
	parameter becomes invisible after analyzing the loop, which has been
	rewritten as a while-loop.

2017-12-05  Doug Rupp  <rupp@adacore.com>

	* vxaddr2line.adb: Revise and enhance for new ports, remove dead ports,
	and update for 64bit ports.

From-SVN: r255410
2017-12-05 11:46:16 +00:00
Pierre-Marie de Rodat
16d92641c4 [multiple changes]
2017-12-05  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Build_In_Place_Formal): Search for the formal by suffix
	instead of the full name.
	* sem_ch6.adb (Create_Extra_Formals): Make sure there are extra formals
	in the case of an instance of a generic.

2017-12-05  Arnaud Charlet  <charlet@adacore.com>

	(Adjust_Global_Switches): Create an alias GNAT_Annotate to map to
	pragma Annotate.

From-SVN: r255409
2017-12-05 11:38:00 +00:00
Sebastian Huber
ab92e6e6a5 RTEMS/Ada: Define EH_MECHANISM
Without this definition I got the following error:

<...>/xgcc <...>  -c -g -O2   -W -Wall -gnatpg -nostdinc  -g -fno-inline \
      -fno-toplevel-reorder -O1  a-except.adb -o a-except.o
a-exexpr.adb:38:06: "System.Exceptions.Machine" is not a predefined library unit
a-exexpr.adb:38:06: "Ada.Exceptions (body)" depends on "Ada.Exceptions.Exception_Propagation (body)"
a-exexpr.adb:38:06: "Ada.Exceptions.Exception_Propagation (body)" depends on "System.Exceptions.Machine (spec)"
../gcc-interface/Makefile:2661: recipe for target 'a-except.o' failed

gcc/ada

	* gcc-interface/Makefile.in (RTEMS): Define EH_MECHANISM.

From-SVN: r255408
2017-12-05 10:46:42 +00:00
Rainer Orth
bf2f5c8979 Avoid -Werror=format-overflow error in dbxout.c (dbxout_block) on 64-bit Solaris/SPARC
* dbxout.c (dbxout_block): Grow buf to 30 bytes.

From-SVN: r255406
2017-12-05 10:03:56 +00:00
Martin Liska
05abad4cca invoke.texi: Document the options.
gcc/
	* doc/invoke.texi: Document the options.
	* flag-types.h (enum sanitize_code): Add
	SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
	of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
	* opts.c: Define new sanitizer options.
	* sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
	(BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
gcc/c/
	* c-typeck.c (pointer_diff): Add new argument and instrument
	pointer subtraction.
	(build_binary_op): Similar for pointer comparison.
gcc/cp/
	* typeck.c (pointer_diff): Add new argument and instrument
	pointer subtraction.
	(cp_build_binary_op): Create compound expression if doing an
	instrumentation.
gcc/testsuite/
	* c-c++-common/asan/pointer-compare-1.c: New test.
	* c-c++-common/asan/pointer-compare-2.c: New test.
	* c-c++-common/asan/pointer-subtract-1.c: New test.
	* c-c++-common/asan/pointer-subtract-2.c: New test.
	* c-c++-common/asan/pointer-subtract-3.c: New test.
	* c-c++-common/asan/pointer-subtract-4.c: New test.
libsanitizer/
	* asan/asan_descriptions.cc: Cherry-pick upstream r319668.
	* asan/asan_descriptions.h: Likewise.
	* asan/asan_report.cc: Likewise.
	* asan/asan_thread.cc: Likewise.
	* asan/asan_thread.h: Likewise.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r255404
2017-12-05 10:23:25 +01:00
Jakub Jelinek
81e4859a97 cp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if -O0 or if -fsanitize=unreachable.
* cp-gimplify.c (cp_maybe_instrument_return): Don't add
	__builtin_unreachable if -O0 or if -fsanitize=unreachable.

	* g++.dg/missing-return.C: Add -O to dg-options.

From-SVN: r255403
2017-12-05 10:17:32 +01:00
Julia Koval
9896696391 Enable VNNI support [1/5]
gcc/
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
	OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
	(ix86_handle_option): Handle -mavx512vnni.
	* config/i386/cpuid.h (bit_AVX512VNNI): New bit.
	* config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
	* config/i386/i386-c (__AVX512VNNI__): New.
	* config/i386/i386.c (ix86_target_string): Handle new option.
	(ix86_valid_target_attribute_inner_p): Handle new option.
	* config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
	* config/i386/i386.opt (mavx512vnni): New option.

From-SVN: r255401
2017-12-05 07:11:58 +00:00
Ian Lance Taylor
ae4bb13f0d compiler: no nil check needed for closure var dereferences
Add the "no nil check needed" annotation to the dereference operations
    created in Parse::enclosing_var_reference (this is safe since the
    closure object is under control of the compiler, and pointer fields in
    it will always be non-nil).
    
    Reviewed-on: https://go-review.googlesource.com/81795

From-SVN: r255400
2017-12-05 02:03:19 +00:00
Steve Ellcey
141abc6f1e Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and libatomic_la_LIBADD.
2017-12-04  Steve Ellcey  <sellcey@cavium.com>

	* Makefile.am (ARCH_AARCH64_LINUX): Add IFUNC_OPTIONS and
	libatomic_la_LIBADD.
	* config/linux/aarch64/host-config.h: New file.
	* configure.ac (IFUNC_RESOLVER_ARGS): Define.
	(ARCH_AARCH64_LINUX): New conditional for IFUNC builds.
	* configure.tgt (aarch64): Set ARCH and try_ifunc.
	(aarch64*-*-linux*) Update config_path.
	(aarch64*-*-linux*) Set IFUNC_RESOLVER_ARGS.
	* libatomic_i.h (GEN_SELECTOR): Add IFUNC_RESOLVER_ARGS argument.
	* Makefile.in: Regenerate.
	* auto-config.h.in: Regenerate.
	* configure: Regenerate.

From-SVN: r255399
2017-12-05 00:49:09 +00:00
GCC Administrator
ad8503503f Daily bump.
From-SVN: r255398
2017-12-05 00:16:14 +00:00
Jan Hubicka
e7bf9583fa re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors)
PR target/81616
	* athlon.md: Disable for generic.
	* haswell.md: Enable for generic.
	* i386.c (ix86_sched_init_global): Add core hooks for generic.
	* x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
	to 4.
	(ix86_adjust_cost): Move generic to haswell path.

From-SVN: r255395
2017-12-04 23:59:11 +00:00
Eric Botcazou
8cc9a08704 sparc.c (sparc_do_work_around_errata): Use mem_ref instead of MEM_P in a couple more places.
* config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
	instead of MEM_P in a couple more places.  Fix formatting issues.

From-SVN: r255393
2017-12-04 23:13:56 +00:00
Jonathan Wakely
472a7639ea Fix warnings in <bits/regex_compiler.tcc>
* include/bits/regex_compiler.tcc: Use C-style comment to work around
	PR preprocessor/61638.
	(__INSERT_REGEX_MATCHER): Replace GNU extension with __VA_ARGS__.

From-SVN: r255392
2017-12-04 23:08:22 +00:00
Jonathan Wakely
9ed83a33c0 Fix -Wunused warnings in libstdc++ headers
* config/io/basic_file_stdio.h (__basic_file): Remove name of unused
	parameter.
	* include/bits/boost_concept_check.h: Add pragmas to disable
	-Wunused-local-typedef warnings.
	* include/bits/codecvt.h (codecvt_byname<char16_t, char, mbstate_t>)
	(codecvt_byname<char32_t, char, mbstate_t>): Remove name of unused
	parameter.
	* include/bits/locale_facets_nonio.tcc (time_get::do_get_weekday)
	(time_get::do_get_monthname, time_get::do_get_year): Remove unused
	variables.
	* include/std/bitset (_Base_bitset<0>::_M_getword): Remove name of
	unused parameter.
	* include/std/streambuf (_IsUnused): Define.
	(basic_streambuf::imbue, basic_streambuf::pbackfail)
	(basic_streambuf::overflow): Add macro to unused parameters.
	* testsuite/24_iterators/operations/prev_neg.cc: Adjust dg-error.

From-SVN: r255391
2017-12-04 23:07:39 +00:00
Jason Merrill
899ac3b800 PR c++/83273 - constexpr if allows non-constant condition
* semantics.c (finish_if_stmt_cond): Use require_constant_expression
	rather than is_constant_expression.
	* constexpr.c (potential_constant_expression_1) [LAMBDA_EXPR]: Allow
	in C++17.

From-SVN: r255390
2017-12-04 17:52:07 -05:00
Jim Wilson
f3abed16a0 Fix typos in riscv register save/restore.
gcc/
	* config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
	instead of GP_REG_LAST-1.
	(riscv_adjust_libcall_cfi_prologue): Likewise.
	(riscv_adjust_libcall_cri_epilogue): Likewise.
	* config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
	comment.

From-SVN: r255389
2017-12-04 14:08:47 -08:00
Luis Machado
75622c9e2f Fix missing newlines from local-pure-const pass dump
I noticed the debugging output from local-pure-const pass is missing a
newline in a couple places, leading to this:

 local analysis of main
   scanning: i ={v} 0;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure  scanning: j ={v} 20;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure  scanning: vol.0_10 ={v} i;
    Volatile stmt is not const/pure

It should've been:

 local analysis of main
   scanning: i ={v} 0;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure
   scanning: j ={v} 20;
    Volatile stmt is not const/pure
    Volatile operand is not const/pure
   scanning: vol.0_10 ={v} i;
    Volatile stmt is not const/pure

gcc/ChangeLog:

2017-12-04  Luis Machado  <luis.machado@linaro.org>

	* ipa-pure-const.c (check_decl): Add missing newline.
	(state_from_flags): Likewise.

From-SVN: r255388
2017-12-04 17:04:18 +00:00
Jeff Law
d49e06ce40 re PR tree-optimization/78496 (Missed opportunities for jump threading)
PR tree-optimizatin/78496
	* gimple-ssa-evrp-analyze.h
	(evrp_range_analyzer::get_vr_values): Simplify.
	* gimple-ssa-evrp-analyze.c: Corresponding changes.
	* tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
	and gimple-ssa-evrp-analyze.h.
	(dom_opt_dom_walker class): Add evrp_range_analyzer member.
	(simplify_stmt_for_jump_threading): Copy a blob of code from
	tree-vrp.c to use ranges to simplify statements.
	(dom_opt_dom_walker::before_dom_children): Call
	evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
	(dom_opt_dom_walker::after_dom_children): Similarly for
	evrp_range_analyzer::leave.
	(dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
	conditionals.

	PR tree-optimization/78496
	* gcc.dg/builtin-unreachable-6.c: Disable DOM.
	* gcc.dg/builtin-unreachable-6a.c: New test.
	* gcc.dg/tree-ssa/20030922-1.c: No longer XFAIL.
	* gcc.dg/ssa-dom-branch-1.c: Tweak expected output.

From-SVN: r255387
2017-12-04 09:14:24 -07:00
Jeff Law
d48f6f3f2d * gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::extract_range_from_stmt):  Always use
	vr_values::update_value_range so preexisting range info is
	medged with new range info, even if the new range is VR_VARYING.

From-SVN: r255386
2017-12-04 09:10:49 -07:00
Segher Boessenkool
178667d2fd combine: Remove use_crosses_set_p
This removes use_crosses_set_p, and uses modified_between_p instead
everywhere it was used.  This improves optimisation.


	* combine.c: Adjust comment.
	(use_crosses_set_p): Delete.
	(can_combine_p): Use modified_between_p instead of use_crosses_set_p.
	(try_combine): Ditto.

From-SVN: r255384
2017-12-04 16:38:20 +01:00
Richard Biener
86502ecfe4 re PR tree-optimization/83255 ([graphite] Wrong code w/ -O1 -floop-nest-optimize)
2017-12-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/83255
	* graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
	Re-add zero-iteration check.

	* gcc.dg/graphite/pr83255.c: New testcase.

From-SVN: r255382
2017-12-04 14:04:36 +00:00
Sebastian Huber
ca4564f9a4 RTEMS/Ada: Account for 64-bit time_t
The Newlib time_t has now 64 bits for RTEMS.

gcc/ada

	* gcc-interface/Makefile.in (RTEMS): Use s-osprim__rtems.adb.
	* libgnat/s-osprim__rtems.adb: New file.
	* libgnarl/s-osinte__rtems.adb (pthread_cond_t): Fix alignment.
	(pthread_mutexattr_t): Likewise.
	(pthread_rwlockattr_t): Likewise.
	(pthread_rwlock_t): Likewise.
	(time_t): Use 64-bit integer.

From-SVN: r255380
2017-12-04 13:36:19 +00:00
Segher Boessenkool
80850da1e9 lra: Clobbers in a parallel are earlyclobbers (PR83245)
The documentation (rtl.texi) says:

  When a @code{clobber} expression for a register appears inside a
  @code{parallel} with other side effects, the register allocator
  guarantees that the register is unoccupied both before and after that
  insn if it is a hard register clobber.

and at least the rs6000 backend relies on that (see PR83245).  This
patch restores that behaviour.

Registers that are also used as operands in the instruction are not
treated as earlyclobber, so such insns also still work (PR80818, an
s390 testcase).


	PR rtl-optimization/83245
	* lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
	hard registers as earlyclobber, also if not in an asm.

From-SVN: r255377
2017-12-04 10:30:37 +01:00
Segher Boessenkool
155f67eb98 re PR bootstrap/83265 (Bootstrap failure on powerpc64)
PR bootstrap/83265
	Revert
	2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>

	PR target/43871
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
	rs6000_cpu based on cpu_index, not tune_index.

From-SVN: r255376
2017-12-04 10:19:27 +01:00
Richard Biener
5d66d3f151 re PR tree-optimization/83238 ([graphite] ICE in graphite_can_represent_scev, at graphite-scop-detection.c:971)
2017-12-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/83238
	* graphite-scop-detection.c (scop_detection::merge_sese): Make
	code match comment, rejecting invalid SESE regions.

	* gcc.dg/graphite/pr83238.c: New testcase.

From-SVN: r255375
2017-12-04 08:26:18 +00:00
Tom de Vries
b6ecbf313b Require effective target alloca for pr82875.c
2017-12-04  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/pr82875.c: Require effective target alloca.

From-SVN: r255374
2017-12-04 06:58:22 +00:00
GCC Administrator
b2ab3c1702 Daily bump.
From-SVN: r255372
2017-12-04 00:16:14 +00:00
John David Anglin
b1947510af pa.c (pa_legitimate_address_p): For scaled indexing...
* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
	require base operand is a REG_POINTER prior to reload on targets
	with non-equivalent space registers.

From-SVN: r255369
2017-12-03 23:18:10 +00:00
Thomas Koenig
0ac7425470 re PR fortran/36313 ([F03] {MIN,MAX}{LOC,VAL} should accept character arguments)
2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* check.c (gfc_check_minval_maxval): Use
	int_orLreal_or_char_check_f2003 for array argument.
	* iresolve.c (gfc_resolve_maxval): Insert number in
	function name for character arguments.
	(gfc_resolve_minval): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc):
	Fix comment.
	(gfc_conv_intrinsic_minmaxval): Resort arguments and call library
	function if dealing with a character function.

2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* Makefile.am: Add new files for character-valued
	maxval and minval.
	* Makefile.in: Regenerated.
	* gfortran.map: Add new functions.
	* m4/iforeach-s2.m4: New file.
	* m4/ifunction-s2.m4: New file.
	* m4/iparm.m4: Add intitval for minval and maxval.
	* m4/maxval0s.m4: New file.
	* m4/maxval1s.m4: New file.
	* m4/minval0s.m4: New file.
	* m4/minval1s.m4: New file.
        * generated/maxval0_s1.c: New file.
        * generated/maxval0_s4.c: New file.
        * generated/maxval1_s1.c: New file.
        * generated/maxval1_s4.c: New file.
        * generated/minval0_s1.c: New file.
        * generated/minval0_s4.c: New file.
        * generated/minval1_s1.c: New file.
        * generated/minval1_s4.c: New file.

2017-12-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/36313
	* gfortran.dg/maxval_char_1.f90: New test.
	* gfortran.dg/maxval_char_2.f90: New test.
	* gfortran.dg/maxval_char_3.f90: New test.
	* gfortran.dg/maxval_char_4.f90: New test.
	* gfortran.dg/minval_char_1.f90: New test.
	* gfortran.dg/minval_char_2.f90: New test.
	* gfortran.dg/minval_char_3.f90: New test.
	* gfortran.dg/minval_char_4.f90: New test.

From-SVN: r255367
2017-12-03 20:14:05 +00:00
Jerry DeLisle
af5ad1e2e5 Fix typo in ChangeLog.
From-SVN: r255366
2017-12-03 16:49:37 +00:00