Commit Graph

157515 Commits

Author SHA1 Message Date
Wilco Dijkstra
6216fd904f [AArch64] Simplify aarch64_can_eliminate
Simplify aarch64_can_eliminate - if we need a frame pointer, we must
eliminate to HARD_FRAME_POINTER_REGNUM.  Rather than hardcoding all
combinations from the ELIMINABLE_REGS list, just do the correct check.

    gcc/
	* config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.

From-SVN: r254534
2017-11-08 15:36:34 +00:00
Wilco Dijkstra
7040939b9e [AArch64] Remove aarch64_frame_pointer_required
To implement -fomit-leaf-frame-pointer, there are 2 places where we need
to check whether we have to use a frame chain (since register allocation
may allocate LR in a leaf function that omits the frame pointer, but if
LR is spilled we must emit a frame chain).  To simplify this do not force
frame_pointer_needed via aarch64_frame_pointer_required, but enable the
frame chain in aarch64_layout_frame.  Now aarch64_frame_pointer_required
can be removed and aarch64_can_eliminate is simplified.

    gcc/
	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
	Remove.
	(aarch64_layout_frame): Initialise emit_frame_chain.
	(aarch64_can_eliminate): Remove omit leaf frame pointer code.
	(TARGET_FRAME_POINTER_REQUIRED): Remove define.

    testsuite/
	* gcc.target/aarch64/dwarf-cfa-reg.c: Update.

From-SVN: r254533
2017-11-08 15:34:36 +00:00
Pierre-Marie de Rodat
7cc7f3aa68 sem_disp.adb (Is_Inherited_Public_Operation): Extend the functionality of this routine to handle multiple levels of derivations.
gcc/ada/

2017-11-08  Javier Miranda  <miranda@adacore.com>

	* sem_disp.adb (Is_Inherited_Public_Operation): Extend the
	functionality of this routine to handle multiple levels of derivations.

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

	* einfo.adb: Elist36 is now used as Nested_Scenarios.
	(Nested_Scenarios): New routine.
	(Set_Nested_Scenarios): New routine.
	(Write_Field36_Name): New routine.
	* einfo.ads: Add new attribute Nested_Scenarios along with occurrences
	in entities.
	(Nested_Scenarios): New routine along with pragma Inline.
	(Set_Nested_Scenarios): New routine along with pragma Inline.
	* sem_elab.adb (Find_And_Process_Nested_Scenarios): New routine.
	(Process_Nested_Scenarios): New routine.
	(Traverse_Body): When a subprogram body is traversed for the first
	time, find, save, and process all suitable scenarios found within.
	Subsequent traversals of the same subprogram body utilize the saved
	scenarios.

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

	* lib-xref-spark_specific.adb (Add_SPARK_Scope): Remove detection of
	protected operations.
	(Add_SPARK_Xrefs): Simplify detection of empty entities.
	* get_spark_xrefs.ads, get_spark_xrefs.adb, put_spark_xrefs.ads,
	put_spark_xrefs.adb, spark_xrefs_test.adb: Remove code for writing,
	reading and testing SPARK cross-references stored in the ALI files.
	* lib-xref.ads (Output_SPARK_Xrefs): Remove.
	* lib-writ.adb (Write_ALI): Do not write SPARK cross-references to the
	ALI file.
	* spark_xrefs.ads, spark_xrefs.adb (pspark): Remove, together
	with description of the SPARK xrefs ALI format.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Remove get_spark_refs.o
	and put_spark_refs.o.

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

	* exp_ch4.adb (Apply_Accessibility_Check): Do not finalize the object
	when the associated access type is subject to pragma
	No_Heap_Finalization.
	* exp_intr.adb (Expand_Unc_Deallocation): Use the available view of the
	designated type in case it comes from a limited withed unit.

gcc/testsuite/

2017-11-08  Javier Miranda  <miranda@adacore.com>

	* gnat.dg/overriding_ops2.adb, gnat.dg/overriding_ops2.ads,
	gnat.dg/overriding_ops2_pkg.ads, gnat.dg/overriding_ops2_pkg-high.ads:
	New testcase.

From-SVN: r254532
2017-11-08 15:17:43 +00:00
Hristian Kirtchev
daf82dd806 exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant SPARK-related flags.
2017-11-08  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Expand_N_Object_Declaration): Save and restore relevant
	SPARK-related flags.  Add ??? comment.
	* exp_util.adb (Insert_Actions): Add an entry for node
	N_Variable_Reference_Marker.
	* sem.adb (Analyze): Add an entry for node N_Variable_Reference_Marker.
	* sem_ch8.adb (Find_Direct_Name): Add constant Is_Assignment_LHS. Build
	and record a variable reference marker for the current name.
	(Find_Expanded_Name): Add constant Is_Assignment_LHS. Build and record
	a variable reference marker for the current name.
	* sem_elab.adb (Build_Variable_Reference_Marker): New routine.
	(Extract_Variable_Reference_Attributes): Reimplemented.
	(Info_Scenario): Add output for variable references and remove output
	for variable reads.
	(Info_Variable_Read): Removed.
	(Info_Variable_Reference): New routine.
	(Is_Suitable_Scenario): Variable references are now suitable scenarios
	while variable reads are not.
	(Output_Active_Scenarios): Add output for variable references and
	remove output for variable reads.
	(Output_Variable_Read): Removed.
	(Output_Variable_Reference): New routine.
	(Process_Variable_Read): Removed.
	(Process_Variable_Reference): New routine.
	(Process_Variable_Reference_Read): New routine.
	* sem_elab.ads (Build_Variable_Reference_Marker): New routine.
	* sem_res.adb (Resolve_Actuals): Build and record a variable reference
	marker for the current actual.
	* sem_spark.adb (Check_Node): Add an entry for node
	N_Variable_Reference_Marker.
	* sem_util.adb (Within_Subprogram_Call): Moved to the library level.
	* sem_util.ads (Within_Subprogram_Call): Moved to the library level.
	* sinfo.adb (Is_Read): New routine.
	(Is_Write): New routine.
	(Target): Updated to handle variable reference markers.
	(Set_Is_Read): New routine.
	(Set_Is_Write): New routine.
	(Set_Target): Updated to handle variable reference markers.
	* sinfo.ads: Add new attributes Is_Read and Is_Write along with
	occurrences in nodes. Update attribute Target. Add new node
	kind N_Variable_Reference_Marker.
	(Is_Read): New routine along with pragma Inline.
	(Is_Write): New routine along with pragma Inline.
	(Set_Is_Read): New routine along with pragma Inline.
	(Set_Is_Write): New routine along with pragma Inline.
	* sprint.adb (Sprint_Node_Actual): Add an entry for node
	N_Variable_Reference_Marker.

From-SVN: r254531
2017-11-08 14:07:31 +00:00
Andreas Schwab
428dab52e9 aarch64-vect-lane-2.c (search_line_fast): Change type to void.
* c-c++-common/torture/aarch64-vect-lane-2.c (search_line_fast):
	Change type to void.

From-SVN: r254530
2017-11-08 13:56:04 +00:00
Arnaud Charlet
879e92d057 sem_util.adb (Subprogram_Name): Append suffix for overloaded subprograms.
2017-11-08  Arnaud Charlet  <charlet@adacore.com>

	* sem_util.adb (Subprogram_Name): Append suffix for overloaded
	subprograms.

From-SVN: r254529
2017-11-08 13:52:43 +00:00
Pierre-Marie de Rodat
e5148da096 [multiple changes]
2017-11-08  Yannick Moy  <moy@adacore.com>

	* sem_ch8.adb (Use_One_Type, Update_Use_Clause_Chain): Do not report
	about unused use-type or use-package clauses inside inlined bodies.

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

	* sem_elab.adb (Ensure_Prior_Elaboration): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not guarantee the
	prior elaboration of a unit when the need came from a partial
	finalization context.
	(In_Initialization_Context): Relocated to Process_Call.
	(Is_Partial_Finalization_Proc): New routine.
	(Process_Access): Add new parameter In_Partial_Fin along with a comment
	on its usage.
	(Process_Activation_Call): Add new parameter In_Partial_Fin along with
	a comment on its usage.
	(Process_Activation_Conditional_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the activation occurs in a partial finalization
	context.
	(Process_Activation_Guaranteed_ABE_Impl): Add new parameter
	In_Partial_Fin along with a comment on its usage.
	(Process_Call): Add new parameter In_Partial_Fin along with a comment
	on its usage. A call is within a partial finalization context when it
	targets a finalizer or primitive [Deep_]Finalize, and the call appears
	in initialization actions. Pass this information down to the recursive
	steps of the Processing phase.
	(Process_Call_Ada): Add new parameter In_Partial_Fin along with a
	comment on its usage. Remove the guard which suppresses the generation
	of implicit Elaborate[_All] pragmas. This is now done in
	Ensure_Prior_Elaboration.
	(Process_Call_Conditional_ABE): Add new parameter In_Partial_Fin along
	with a comment on its usage. Do not emit any ABE diagnostics when the
	call occurs in a partial finalization context.
	(Process_Call_SPARK): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation): Add new parameter In_Partial_Fin along with a
	comment on its usage.
	(Process_Instantiation_Ada): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Instantiation_Conditional_ABE): Add new parameter
	In_Partial_Fin along with a comment on its usage. Do not emit any ABE
	diagnostics when the instantiation occurs in a partial finalization
	context.
	(Process_Instantiation_SPARK): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Process_Scenario): Add new parameter In_Partial_Fin along  with a
	comment on its usage.
	(Process_Single_Activation): Add new parameter In_Partial_Fin along
	with a comment on its usage.
	(Traverse_Body): Add new parameter In_Partial_Fin along with a comment
	on its usage.

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

	* sem_ch13.adb: Add optional parameter to Error_Msg.

2017-11-08  Jerome Lambourg  <lambourg@adacore.com>

	* fname.adb (Is_Internal_File_Name): Do not check the 8+3 naming schema
	for the Interfaces.* hierarchy as longer unit names are now allowed.

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

	* sem_util.adb (Subprogram_Name): Emit sloc for the enclosing
	subprogram as well.  Support more cases of entities.
	(Append_Entity_Name): Add some defensive code.

From-SVN: r254528
2017-11-08 13:46:19 +00:00
Janne Blomqvist
63ee540430 PR 82869 Introduce logical_type_node and use it
Earlier GFortran used to redefine boolean_type_node, which in the rest
of the compiler means the C/C++ _Bool/bool type, to the Fortran
default logical type.  When this redefinition was removed, a few
issues surfaced. Namely,

1) PR 82869, where we created a boolean tmp variable, and passed it to
the runtime library as a Fortran logical variable of a different size.

2) Fortran specifies that logical operations should be done with the
default logical kind, not in any other kind.

3) Using 8-bit variables have some issues, such as
   - on x86, partial register stalls and length prefix changes.
   - s390 has a compare with immediate and jump instruction which
     works with 32-bit but not 8-bit quantities.

This patch addresses these issues by introducing a type
logical_type_node which is a Fortran LOGICAL variable of default
kind. It is then used in places were the Fortran standard mandates, as
well as for compiler generated temporary variables.

For x86-64, using the Polyhedron benchmark suite, no performance or
code size difference worth mentioning was observed.

Regtested on x86_64-pc-linux-gnu.

gcc/fortran/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 82869
	* convert.c (truthvalue_conversion): Use logical_type_node.
	* trans-array.c (gfc_trans_allocate_array_storage): Likewise.
	(gfc_trans_create_temp_array): Likewise.
	(gfc_trans_array_ctor_element): Likewise.
	(gfc_trans_array_constructor_value): Likewise.
	(trans_array_constructor): Likewise.
	(trans_array_bound_check): Likewise.
	(gfc_conv_array_ref): Likewise.
	(gfc_trans_scalarized_loop_end): Likewise.
	(gfc_conv_array_extent_dim): Likewise.
	(gfc_array_init_size): Likewise.
	(gfc_array_allocate): Likewise.
	(gfc_trans_array_bounds): Likewise.
	(gfc_trans_dummy_array_bias): Likewise.
	(gfc_conv_array_parameter): Likewise.
	(duplicate_allocatable): Likewise.
	(duplicate_allocatable_coarray): Likewise.
	(structure_alloc_comps): Likewise
	(get_std_lbound): Likewise
	(gfc_alloc_allocatable_for_assignment): Likewise
	* trans-decl.c (add_argument_checking): Likewise
	(gfc_generate_function_code): Likewise
	* trans-expr.c (gfc_copy_class_to_class): Likewise
	(gfc_trans_class_array_init_assign): Likewise
	(gfc_trans_class_init_assign): Likewise
	(gfc_conv_expr_present): Likewise
	(gfc_conv_substring): Likewise
	(gfc_conv_cst_int_power): Likewise
	(gfc_conv_expr_op): Likewise
	(gfc_conv_procedure_call): Likewise
	(fill_with_spaces): Likewise
	(gfc_trans_string_copy): Likewise
	(gfc_trans_alloc_subarray_assign): Likewise
	(gfc_trans_pointer_assignment): Likewise
	(gfc_trans_scalar_assign): Likewise
	(fcncall_realloc_result): Likewise
	(alloc_scalar_allocatable_for_assignment): Likewise
	(trans_class_assignment): Likewise
	(gfc_trans_assignment_1): Likewise
	* trans-intrinsic.c (build_fixbound_expr): Likewise
	(gfc_conv_intrinsic_aint): Likewise
	(gfc_trans_same_strlen_check): Likewise
	(conv_caf_send): Likewise
	(trans_this_image): Likewise
	(conv_intrinsic_image_status): Likewise
	(trans_image_index): Likewise
	(gfc_conv_intrinsic_bound): Likewise
	(conv_intrinsic_cobound): Likewise
	(gfc_conv_intrinsic_mod): Likewise
	(gfc_conv_intrinsic_dshift): Likewise
	(gfc_conv_intrinsic_dim): Likewise
	(gfc_conv_intrinsic_sign): Likewise
	(gfc_conv_intrinsic_ctime): Likewise
	(gfc_conv_intrinsic_fdate): Likewise
	(gfc_conv_intrinsic_ttynam): Likewise
	(gfc_conv_intrinsic_minmax): Likewise
	(gfc_conv_intrinsic_minmax_char): Likewise
	(gfc_conv_intrinsic_anyall): Likewise
	(gfc_conv_intrinsic_arith): Likewise
	(gfc_conv_intrinsic_minmaxloc): Likewise
	(gfc_conv_intrinsic_minmaxval): Likewise
	(gfc_conv_intrinsic_btest): Likewise
	(gfc_conv_intrinsic_bitcomp): Likewise
	(gfc_conv_intrinsic_shift): Likewise
	(gfc_conv_intrinsic_ishft): Likewise
	(gfc_conv_intrinsic_ishftc): Likewise
	(gfc_conv_intrinsic_leadz): Likewise
	(gfc_conv_intrinsic_trailz): Likewise
	(gfc_conv_intrinsic_mask): Likewise
	(gfc_conv_intrinsic_spacing): Likewise
	(gfc_conv_intrinsic_rrspacing): Likewise
	(gfc_conv_intrinsic_size): Likewise
	(gfc_conv_intrinsic_sizeof): Likewise
	(gfc_conv_intrinsic_transfer): Likewise
	(gfc_conv_allocated): Likewise
	(gfc_conv_associated): Likewise
	(gfc_conv_same_type_as): Likewise
	(gfc_conv_intrinsic_trim): Likewise
	(gfc_conv_intrinsic_repeat): Likewise
	(conv_isocbinding_function): Likewise
	(conv_intrinsic_ieee_is_normal): Likewise
	(conv_intrinsic_ieee_is_negative): Likewise
	(conv_intrinsic_ieee_copy_sign): Likewise
	(conv_intrinsic_move_alloc): Likewise
	* trans-io.c (set_parameter_value_chk): Likewise
	(set_parameter_value_inquire): Likewise
	(set_string): Likewise
	* trans-openmp.c (gfc_walk_alloc_comps): Likewise
	(gfc_omp_clause_default_ctor): Likewise
	(gfc_omp_clause_copy_ctor): Likewise
	(gfc_omp_clause_assign_op): Likewise
	(gfc_omp_clause_dtor): Likewise
	(gfc_omp_finish_clause): Likewise
	(gfc_trans_omp_clauses): Likewise
	(gfc_trans_omp_do): Likewise
	* trans-stmt.c (gfc_trans_goto): Likewise
	(gfc_trans_sync): Likewise
	(gfc_trans_arithmetic_if): Likewise
	(gfc_trans_simple_do): Likewise
	(gfc_trans_do): Likewise
	(gfc_trans_forall_loop): Likewise
	(gfc_trans_where_2): Likewise
	(gfc_trans_allocate): Likewise
	(gfc_trans_deallocate): Likewise
	* trans-types.c (gfc_init_types): Initialize logical_type_node and
	its true/false trees.
	(gfc_get_array_descr_info): Use logical_type_node.
	* trans-types.h (logical_type_node): New tree.
	(logical_true_node): Likewise.
	(logical_false_node): Likewise.
	* trans.c (gfc_trans_runtime_check): Use logical_type_node.
	(gfc_call_malloc): Likewise
	(gfc_allocate_using_malloc): Likewise
	(gfc_allocate_allocatable): Likewise
	(gfc_add_comp_finalizer_call): Likewise
	(gfc_add_finalizer_call): Likewise
	(gfc_deallocate_with_status): Likewise
	(gfc_deallocate_scalar_with_status): Likewise
	(gfc_call_realloc): Likewise

gcc/testsuite/ChangeLog:

2017-11-08  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 82869
	* gfortran.dg/logical_temp_io.f90: New test.
	* gfortran.dg/logical_temp_io_kind8.f90: New test.

From-SVN: r254526
2017-11-08 13:51:00 +02:00
Martin Liska
c8ce479d39 Fix vrp101.c test-case.
2017-11-08  Martin Liska  <mliska@suse.cz>

	* gcc.dg/tree-ssa/vrp101.c: Update expected pattern as
	frequencies are not longer printed in dump output.

From-SVN: r254525
2017-11-08 11:46:07 +00:00
Martin Liska
9f6fbcd3c9 Simplify call of gimple_call_internal_p.
2017-11-08  Martin Liska  <mliska@suse.cz>

	* gimplify.c (expand_FALLTHROUGH_r): Simplify usage
	of gimple_call_internal_p.

From-SVN: r254524
2017-11-08 11:45:35 +00:00
Eric Botcazou
106db840d0 * gcc.dg/strlenopt-33g.c: Remove duplicate dg-do command.
From-SVN: r254523
2017-11-08 10:00:31 +00:00
Rainer Orth
89334d4b19 Fix -Wreturn-type fallout in g++.old-deja/g++.brendan/asm-extn1.C
* g++.old-deja/g++.brendan/asm-extn1.C: Accept all sparc* targets.
	(main): Add return type.

From-SVN: r254522
2017-11-08 09:39:33 +00:00
Tom de Vries
66d4b7331f [mips] Wrap ASM_OUTPUT_LABELREF in do {} while (0)
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".

From-SVN: r254521
2017-11-08 08:51:52 +00:00
Tom de Vries
65f371e47e [mips] Remove semicolon after do {} while (0) in ASM_OUTPUT_CASE_END
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
	"do {} while (0)".

From-SVN: r254520
2017-11-08 08:51:43 +00:00
Martin Liska
053ee6a774 Fix fallthrough attribute ignorance w/ -fsanitize=address (PR sanitizer/82792).
2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
2017-11-08  Martin Liska  <mliska@suse.cz>

	PR sanitizer/82792
	* g++.dg/asan/pr82792.C: New test.

From-SVN: r254519
2017-11-08 08:17:30 +00:00
Jakub Jelinek
5925290f7d re PR bootstrap/82670 (UBSAN bootstrap broken after recent libsanitizer merge)
PR bootstrap/82670
	* ubsan/Makefile.am (ubsan_files): Remove ubsan_init_standalone.cc
	and ubsan_signals_standalone.cc.
	* ubsan/Makefile.in: Regenerated.

From-SVN: r254518
2017-11-08 09:17:02 +01:00
Martin Liska
caba2b36fa analyze_brprob.py: fix SI units
2017-11-08  Martin Liska  <mliska@suse.cz>

	* analyze_brprob.py: Fix abbreviations for SI units.

From-SVN: r254517
2017-11-08 07:24:14 +00:00
GCC Administrator
41f1dada8e Daily bump.
From-SVN: r254516
2017-11-08 00:16:19 +00:00
Eric Botcazou
f47440662e * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
From-SVN: r254513
2017-11-07 23:58:52 +00:00
Boris Kolpackov
5666f12bba [PATCH] Install cp/operators.def as part of plugin headers
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00498.html
2017-11-07 Boris Kolpackov  <boris@codesynthesis.com>
	* Make-lang.in (CP_PLUGIN_HEADERS): Add operators.def since included
	in cp-tree.h.

From-SVN: r254512
2017-11-07 22:49:25 +00:00
Jakub Jelinek
4dbeb71612 re PR c++/82835 (ICE on valid code with -fopenmp)
PR c++/82835
	* cp-gimplify.c (cxx_omp_clause_apply_fn): For methods pass i - 1 to
	convert_default_arg instead of i.

	* testsuite/libgomp.c++/pr82835.C: New test.

From-SVN: r254511
2017-11-07 21:51:05 +01:00
Jakub Jelinek
acd377795f re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855
	* config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
	(*cmp<mode>_ccz_1): New insn with $k alternative.

	* gcc.target/i386/avx512dq-pr82855.c: New test.

From-SVN: r254510
2017-11-07 21:49:30 +01:00
Jakub Jelinek
682d3a4076 re PR target/82855 (AVX512: replace OP+movemask with OP_mask+ktest)
PR target/82855
	* config/i386/i386.c (ix86_swap_binary_operands_p): Treat
	RTX_COMM_COMPARE as commutative as well.
	(ix86_binary_operator_ok): Formatting fix.
	* config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
	*<code><mode>3<mask_name><round_saeonly_name>,
	*<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
	*<s>mul<mode>3_highpart<mask_name>,
	*vec_widen_umult_even_v16si<mask_name>,
	*vec_widen_umult_even_v8si<mask_name>,
	*vec_widen_umult_even_v4si<mask_name>,
	*vec_widen_smult_even_v16si<mask_name>,
	*vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
	*avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
	*avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
	*sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
	*sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
	<avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
	*sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
	*<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
	*<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
	!(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
	ix86_binary_operator_ok.  Formatting fixes.
	(*<plusminus_insn><mode>3<mask_name><round_name>,
	*<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
	fixes.

From-SVN: r254509
2017-11-07 21:48:35 +01:00
Segher Boessenkool
b15ef5d3f8 rs6000: Use isel for the cstore patterns
We currently generate (sometimes pretty long) sequences of integer
insns to implement the various cstore patterns.  If the CPU has a fast
isel, we can use that at the same latency as of just two integer insns
(you also get a load immediate of 1, and sometimes one of 0 as well,
but those are not in the critical path: they don't depend on any other
instruction).

There are a few patterns that already are implemented with just two
instructions; so don't use isel in that case (I still need to check
all lt/gt/ltu/gtu/le/leu/ge/geu patterns with all SI/DI combinations,
one or two might be better without isel).

This introduces a new GPR2 mode iterator, for those patterns that use
two independent integer modes.


	* config/rs6000/rs6000.md (GPR2): New mode_iterator.
	("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
	eq and ne if TARGET_ISEL.
	(cmp): New code_iterator.
	(UNS, UNSU_, UNSIK): New code_attrs.
	(<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
	("eq<mode>3"): New define_expand, rename the define_insn_and_split
	to...
	("eq<mode>3"): ... this.
	("ne<mode>3"): New define_expand, rename the define_insn_and_split
	to...
	("ne<mode>3"): ... this.

From-SVN: r254508
2017-11-07 20:33:57 +01:00
Julia Koval
d4bc3829f1 Fix SSE bits dependencies.
gcc/
	PR target/82812
	* common/config/i386/i386-common.c
	(OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
	(ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
	* config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
	* config/i386/i386.opt: Ditto.
	* config/i386/i386.c (ix86_target_string): Ditto.
	(ix86_option_override_internal): Ditto.
	(ix86_init_mpx_builtins): Move MPX to args2.
	(ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
	* config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
	__builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
	__builtin_ia32_vgf2p8affineinvqb_v32qi,
	__builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
	__builtin_ia32_vgf2p8affineinvqb_v16qi,
	__builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.

From-SVN: r254507
2017-11-07 19:11:08 +00:00
Jonathan Wakely
d8dcc3a67d Check for S_ISSOCK before use
* src/filesystem/ops-common.h (make_file_type) [S_ISSOCK]: Only use
	S_ISSOCK when defined.

From-SVN: r254506
2017-11-07 19:08:06 +00:00
Uros Bizjak
fa97b067e1 re PR target/80425 (Extra inter-unit register move with zero-extension)
PR target/80425
	* config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
	and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
	(zero-extendsidi peephole2): Remove peephole.

testsuite/ChangeLog:

	PR target/80425
	* gcc.target/i386/pr80425-3.c: New test.

From-SVN: r254505
2017-11-07 19:51:22 +01:00
Ian Lance Taylor
8b36a25018 compiler: don't double count "." in nested_function_num
Nested functions are named "outerfunc.$nestedN", where N is a
    number. nested_function_num extracts that number. The name is
    first passed to unpack_hidden_name, which handles the "." and
    should result "$nestedN". Don't expect the "." again.
    
    This fixes assertion failure when escape analysis is enabled
    and -fgo-debug-escape is on. The failure looks
    
    go1: internal compiler error: in nested_function_num, at go/gofrontend/names.cc:241
    0x7bd7d3 Gogo::nested_function_num(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    
    Reviewed-on: https://go-review.googlesource.com/76213

From-SVN: r254504
2017-11-07 18:19:19 +00:00
Eric Botcazou
02d7065ff4 re PR c/53037 (warn_if_not_aligned(X))
PR c/53037
	* stor-layout.c: Include attribs.h.
	(handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
	explicit lookup of "aligned" attribute.

From-SVN: r254503
2017-11-07 17:37:29 +00:00
Andreas Schwab
15ad44e7ec * g++.dg/pr50763-3.C (evalPoint): Return a value.
From-SVN: r254502
2017-11-07 17:27:46 +00:00
Andrew Waterman
6ed01e6b28 RISC-V: Implement movmemsi
Without this we aren't getting proper memcpy inlining on RISC-V systems,
which is particularly disastrous for Dhrystone performance on RV32IM
systems.

gcc/ChangeLog

2017-11-07  Andrew Waterman  <andrew@sifive.com>

        * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New
        prototype.
        (riscv_expand_block_move): Likewise.
        gcc/config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
        implementation.
        (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
        (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
        gcc/config/riscv/riscv.c (riscv_block_move_straight): New
        function.
        (riscv_adjust_block_mem): Likewise.
        (riscv_block_move_loop): Likewise.
        (riscv_expand_block_move): Likewise.
        gcc/config/riscv/riscv.md (movmemsi): New pattern.

From-SVN: r254501
2017-11-07 17:09:39 +00:00
Michael Clark
4d30a85ece RISC-V: Define MUSL_DYNAMIC_LINKER
Use no suffix at all in the musl dynamic linker name for hard
float ABI. Use -sf and -sp suffixes in musl dynamic linker name
for soft float and single precision ABIs. The following table
outlines the musl interpreter names for the RISC-V ABI names.

musl interpreter        | RISC-V ABI
----------------------- | -------------
ld-musl-riscv32.so.1    | riscv32-ilp32d
ld-musl-riscv64.so.1    | riscv64-lp64d
ld-musl-riscv32-sf.so.1 | riscv32-ilp32
ld-musl-riscv64-sf.so.1 | riscv64-lp64
ld-musl-riscv32-sp.so.1 | riscv32-ilp32f
ld-musl-riscv64-sp.so.1 | riscv64-lp64f

gcc/ChangeLog

2017-11-06  Michael Clark  <michaeljclark@mac.com>

        * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
        (MUSL_DYNAMIC_LINKER): Likewise.

From-SVN: r254500
2017-11-07 16:58:37 +00:00
Richard Sandiford
f32c3adb8d [AArch64] Use aarch64_reg_or_imm instead of nonmemory_operand
Some of the shift expanders accepted nonmemory_operands but were only
able to handle register_operands or CONST_INTs.  This is probably
academic without SVE, since we're not likely to see shifts by other
types of constant (const_wide_ints, consts, etc).  But for SVE,
it's possible for a vectorised shift induction to have a CONST_POLY_INT
shift amount.

This patch makes the expanders use aarch64_reg_or_imm instead.

2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
	(rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
	nonmmory_operand.

From-SVN: r254499
2017-11-07 16:08:47 +00:00
Richard Biener
56ccfbd608 match.pd: Fix build.
2017-11-07  Richard Biener  <rguenther@suse.de>

	* match.pd: Fix build.

From-SVN: r254498
2017-11-07 12:52:35 +00:00
Wilco Dijkstra
6a43531492 PR71026: Canonicalize negates in division
Canonicalize x / (- y) into (-x) / y.

This moves negates out of the RHS of a division in order to
allow further simplifications and potentially more reciprocal CSEs.

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

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

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

From-SVN: r254497
2017-11-07 12:38:55 +00:00
Sudakshina Das
4349b15f97 PR80131: Simplification of 1U << (31 - x)
Currently the code A << (B - C) is not simplified.
However at least a more specific case of 1U << (C -x) where
C = precision(type) - 1 can be simplified to (1 << C) >> x.

This is done by adding a new simplification rule in match.pd.

2017-11-07  Sudakshina Das  <sudi.das@arm.com>

    gcc/
	PR middle-end/80131
	* match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.

    testsuite/
	PR middle-end/80131
	* testsuite/gcc.dg/pr80131-1.c: New Test.

From-SVN: r254496
2017-11-07 12:23:38 +00:00
Marc Glisse
e268a77b59 More bitop simplifications in match.pd
2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

gcc/
	* match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
	(a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.

gcc/testsuite/
	* gcc.dg/tree-ssa/bitops-1.c: New file.

From-SVN: r254495
2017-11-07 11:08:06 +00:00
Marc Glisse
81bd903a6a More fold_negate in match.pd
gcc/ChangeLog:

2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

	* fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
	non-scalar integral types.
	* match.pd (negate_expr_p): Handle MINUS_EXPR.
	(-(A-B), -(~A)): New transformations.

gcc/testsuite/ChangeLog:

2017-11-07  Marc Glisse  <marc.glisse@inria.fr>

	* gcc.dg/tree-ssa/negminus.c: New test.

From-SVN: r254494
2017-11-07 11:04:14 +00:00
Tom de Vries
13792cce5f [powerpcspe] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
	semicolon after "do {} while (0)".
	* config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.

From-SVN: r254493
2017-11-07 11:00:46 +00:00
Tom de Vries
e73d717bc3 [rs6000] Remove semicolon after do {} while (0) in SUBTARGET_OVERRIDE_OPTIONS
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
	after "do {} while (0)".
	* config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
	* config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.

From-SVN: r254492
2017-11-07 09:22:11 +00:00
Tom de Vries
65f480c76f [libgcc, rs6000] Remove semicolon after do {} while (0) in REGISTER_CFA_OFFSET_FOR
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	* config/rs6000/aix-unwind.h (REGISTER_CFA_OFFSET_FOR): Remove semicolon
	after "do {} while (0)".

From-SVN: r254491
2017-11-07 09:21:40 +00:00
Tom de Vries
aac11893d4 [arm] Remove semicolon after while {} do (0) in HANDLE_NARROW_SHIFT_ARITH
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	PR other/82784
	* config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
	"while {} do (0)".
	(arm_rtx_costs_internal): Add missing semicolon after
	HANDLE_NARROW_SHIFT_ARITH call.

From-SVN: r254490
2017-11-07 08:11:54 +00:00
Tom de Vries
2a321acb02 [libgcc] Remove semicolon after do {} while (0) in FP_HANDLE_EXCEPTIONS
2017-11-07  Tom de Vries  <tom@codesourcery.com>

	PR other/82784
	* config/aarch64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Remove
	semicolon after "do {} while (0)".
	* config/i386/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
	* config/ia64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
	* config/mips/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.
	* config/rs6000/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Same.

From-SVN: r254489
2017-11-07 08:11:43 +00:00
Jason Merrill
96d155c696 P0704R1 - fixing const-qualified pointers to members
* typeck2.c (build_m_component_ref): Also accept in lower stds with
	a pedwarn.

From-SVN: r254487
2017-11-07 00:30:40 -05:00
Alan Modra
2d041117f1 Require ngettext in test of system gettext implementation
gcc currently uses ngettext in a number of places (gcc/cp/pt.c,
gcc/diagnostic.c, gcc/collect2.c).  Apparently there are (or used to
be) gettext implementations that lack ngettext.  See config/gettext.m4.

This patch arranges for intl/ to be compiled when the system gettext
lacks ngettext.

	* configure.ac: Invoke AM_GNU_GETTEXT with need_ngettext.
	* configure: Regenerate.

From-SVN: r254486
2017-11-07 15:24:01 +10:30
Segher Boessenkool
0ed1b4890a rs6000: Don't clear TARGET_ISEL implicitly
We want to actually use isel, so we shouldn't disable it.  It is
already not set by default on CPUs that don't have it, or where we
do not want to use it.


	* config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
	disable isel if it was not set explicitly.

From-SVN: r254485
2017-11-07 04:45:50 +01:00
James Bowman
a297ccb52e FT32 makes use of multiple address spaces.
FT32 makes use of multiple address spaces. When trying to inspect
objects in GDB, GDB was treating them as a straight "const". The cause
seems to be in GCC DWARF2 output.

This output is handled in gcc/gcc/dwarf2out.c, where modified_type_die()
checks that TYPE has qualifiers CV_QUALS. However while TYPE has
ADDR_SPACE qualifiers, the modified_type_die() explicitly discards the
ADDR_SPACE qualifiers.

This patch retains the ADDR_SPACE qualifiers as modified_type_die()
outputs the DWARF type tree.  This allows the types to match, and correct
type information for the object is emitted.

[gcc]

2017-11-06  James Bowman  <james.bowman@ftdichip.com>

	* gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE
	qualifiers.
        (add_type_attribute) likewise.

From-SVN: r254484
2017-11-07 01:10:18 +00:00
GCC Administrator
853c0dfba2 Daily bump.
From-SVN: r254483
2017-11-07 00:16:15 +00:00
H.J. Lu
9f8760ed72 i386: Use reference of struct ix86_frame to avoid copy
When there is no need to make a copy of ix86_frame, we can use reference
of struct ix86_frame to avoid copy.

Tested on x86-64.

	* config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
	of struct ix86_frame.
	(ix86_initial_elimination_offset): Likewise.
	(ix86_expand_split_stack_prologue): Likewise.

From-SVN: r254480
2017-11-06 15:04:15 -08:00
Jeff Law
53d855e09d stack-check-12.c: Revert to initial version.
* gcc.target/i386/stack-check-12.c: Revert to initial version.  Then..
	Add -fomit-frame-pointer.

From-SVN: r254479
2017-11-06 15:44:39 -07:00