157091 Commits

Author SHA1 Message Date
Jerry DeLisle
730de5a59e re PR libfortran/81938 (valgrind error message and heap-buffer-overflow on address sanitized libgfortran.so)
2017-10-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Rimvydas (RJ)

	PR libgfortran/81938
	io/format.c (free_format_data): Don't try to free vlist
	descriptors past the end of the fnode array.

From-SVN: r254163
2017-10-27 17:50:22 +00:00
Jonathan Wakely
6c6705a904 Simplify _Node_insert_return to avoid including <tuple>
* include/bits/node_handle.h (_Node_insert_return::get): Avoid
	use of std::tie and std::get.

From-SVN: r254162
2017-10-27 18:49:36 +01:00
Jonathan Wakely
5880ce184a List headers in Makefile in alphabetical order
* include/Makefile.am: Put headers in alphabetical order.
	* include/Makefile.in: Regenerate.

From-SVN: r254161
2017-10-27 18:49:32 +01:00
Jonathan Wakely
29453a9ffd Remove noexcept from filesystem iterators and operations (LWG 3013, 3014)
* include/bits/fs_dir.h (directory_iterator): Remove noexcept from
	constructors and increment member (LWG 3013).
	(recursive_directory_iterator): Likewise.
	* include/bits/fs_ops.h (copy, copy_file, create_directories)
	(is_empty, remove_all): Remove noexcept (LWG 3013 and LWG 3014).
	* src/filesystem/std-dir.cc (directory_iterator::increment)
	(recursive_directory_iterator::increment): Remove noexcept.
	* src/filesystem/std-ops.cc (copy, copy_file, create_directories)
	(is_empty, remove_all): Remove noexcept

From-SVN: r254160
2017-10-27 18:49:29 +01:00
Jonathan Wakely
9a3effa411 Make filesystem::file_status default constructor non-explicit (LWG 2787)
* include/bits/fs_dir.h (file_status): Make default constructor
	non-explicit (LWG 2787).
	* testsuite/27_io/filesystem/file_status/1.cc: New test.
	* testsuite/experimental/filesystem/file_status/1.cc: New test.

From-SVN: r254159
2017-10-27 18:49:21 +01:00
Paolo Carlini
ba05366bad pt.c (invalid_nontype_parm_type_p): Return a bool instead of an int.
2017-10-27  Paolo Carlini  <paolo.carlini@oracle.com>

	* pt.c (invalid_nontype_parm_type_p): Return a bool instead of an int.

From-SVN: r254158
2017-10-27 17:32:58 +00:00
Thomas Koenig
6c6bde3070 re PR fortran/56342 (MATMUL with PARAMETER: Simplification usually doesn't work)
2017-10-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56342
	* simplify.c (is_constant_array_expr): If the expression is
	a parameter array, call gfc_simplify_expr.

2017-10-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/56342
	* gfortran.dg/matmul_const.f90: New test.

From-SVN: r254157
2017-10-27 17:11:42 +00:00
Jeff Law
a09ca93a71 gimple-ssa-sprintf.c: Include domwalk.h.
* gimple-ssa-sprintf.c: Include domwalk.h.
	(class sprintf_dom_walker): New class, derived from dom_walker.
	(sprintf_dom_walker::before_dom_children): New function.
	(struct call_info): Moved into sprintf_dom_walker class
	(compute_formath_length, handle_gimple_call): Likewise.
	(sprintf_length::execute): Call the dominator walker rather
	than walking the statements.

From-SVN: r254156
2017-10-27 10:54:49 -06:00
Jeff Law
a565d95cd0 tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle gimple statement locations.
* tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
	gimple statement locations.
	(check_array_bounds): Corresponding changes.  Get the statement's
	location directly from wi->stmt.

From-SVN: r254154
2017-10-27 09:35:37 -06:00
Palmer Dabbelt
f44d7b243a RISC-V: Correct and improve the "-mabi" documentation
The documentation for the "-mabi" argument on RISC-V was incorrect.  We
chose to treat this as a documentation bug rather than a code bug, and
to make the documentation match what GCC currently does.  In the
process, I also improved the documentation a bit.

Thanks to Alex Bradbury for finding the bug!

PR target/82717: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82717

gcc/ChangeLog

2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>

        PR target/82717
        * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.

From-SVN: r254153
2017-10-27 15:22:43 +00:00
Jan Hubicka
4c249d9737 x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY, [...]): Disable for Haswell and newer CPUs.
* config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
	X86_TUNE_MOVX): Disable for Haswell and newer CPUs.

From-SVN: r254152
2017-10-27 14:30:00 +00:00
Martin Liska
7181cca3d0 Fix profiledbootstrap.
2017-10-27  Martin Liska  <mliska@suse.cz>

	* Makefile.tpl: Use proper name of folder as it was renamed
	during transition to 4 stages.
	* Makefile.in: Regenerate.

From-SVN: r254150
2017-10-27 13:13:05 +00:00
Jonathan Wakely
d49f254a6c Provide filesystem::path overloads for file streams (LWG 2676, partial)
* include/std/fstream (basic_filebuf::_If_path): New SFINAE helper.
	(basic_filebuf::open<Path>(const Path&, const ios_base::openmode&))
	(basic_ifstream<Path>(const Path&, const ios_base::openmode&))
	(basic_ifstream::open<Path>(const Path&, const ios_base::openmode&))
	(basic_ofstream<Path>(const Path&, const ios_base::openmode&))
	(basic_ofstream::open<Path>(const Path&, const ios_base::openmode&))
	(basic_fstream<Path>(const Path&, const ios_base::openmode&))
	(basic_fstream::open<Path>(const Path&, const ios_base::openmode&)):
	New constructors and member functions.
	* testsuite/27_io/basic_filebuf/open/char/path.cc: New test.
	* testsuite/27_io/basic_fstream/cons/char/path.cc: New test.
	* testsuite/27_io/basic_fstream/open/char/path.cc: New test.
	* testsuite/27_io/basic_ifstream/cons/char/path.cc: New test.
	* testsuite/27_io/basic_ifstream/open/char/path.cc: New test.
	* testsuite/27_io/basic_ofstream/cons/char/path.cc: New test.
	* testsuite/27_io/basic_ofstream/open/char/path.cc: New test.

From-SVN: r254148
2017-10-27 13:39:01 +01:00
Jan Hubicka
9333319b52 * gcc.target/i386/pr70021.c: Add -mtune=skylake.
From-SVN: r254147
2017-10-27 12:36:28 +00:00
Jakub Jelinek
76ff5c2403 re PR target/82703 (Wrong addition of std::array components with -O2 -ftree-loop-vectorize -ftree-slp-vectorize (works fine with -O2))
PR target/82703
	* config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
	* config/i386/i386.c (maybe_get_pool_constant): Removed.
	(ix86_split_to_parts): Use avoid_constant_pool_reference instead of
	maybe_get_pool_constant.
	* config/i386/predicates.md (zero_extended_scalar_load_operand):
	Likewise.

	* gcc.dg/pr82703.c: New test.

From-SVN: r254145
2017-10-27 14:20:55 +02:00
Jonathan Wakely
0348dd008a Define std::filesystem::path::format enum (P0430R2)
* include/bits/fs_path.h (path::format): Define new enumeration type.
	(path(string_type&&), path<Source>(const Source&))
	(path<InputIterator>(InputIterator, InputIterator))
	(path<Source>(const Source&, const locale&))
	(path<InputIterator>(InputIterator, InputIterator, const locale&)):
	Add format parameter.
	* testsuite/27_io/filesystem/path/construct/format.cc: New test.

From-SVN: r254144
2017-10-27 13:01:49 +01:00
Rainer Orth
57e7db041f Update install.texi for Solaris 12 rename
* doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
	2.26 caveat.  Update gas and gld versions.
	(Specific, *-*-solaris2*): Update binutils version.  Remove caveat
	reference.

From-SVN: r254143
2017-10-27 11:59:37 +00:00
Prathamesh Kulkarni
0fab169b28 Extend ipa-pure-const pass to propagate malloc attribute.
2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	* cgraph.h (set_malloc_flag): Declare.
	* cgraph.c (set_malloc_flag_1): New function.
	(set_malloc_flag): Likewise.
	* ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
	* ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
	false.
	(read_ipa_call_summary): Add support for reading is_return_callee.
	(write_ipa_call_summary): Stream is_return_callee.
	* ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
	* ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
	ipa-prop.h, ipa-fnsummary.h.
	(pure_const_names): Change to static.
	(malloc_state_e): Define.
	(malloc_state_names): Define.
	(funct_state_d): Add field malloc_state.
	(varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
	(check_retval_uses): New function.
	(malloc_candidate_p): Likewise.
	(analyze_function): Add support for malloc attribute.
	(pure_const_write_summary): Stream malloc_state.
	(pure_const_read_summary): Add support for reading malloc_state.
	(dump_malloc_lattice): New function.
	(propagate_malloc): New function.
	(warn_function_malloc): New function.
	(ipa_pure_const::execute): Call propagate_malloc and
	ipa_free_fn_summary.
	(pass_local_pure_const::execute): Add support for malloc attribute.
	* ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
	* doc/invoke.texi: Document Wsuggest-attribute=malloc.

testsuite/
	* gcc.dg/ipa/propmalloc-1.c: New test-case.
	* gcc.dg/ipa/propmalloc-2.c: Likewise.
	* gcc.dg/ipa/propmalloc-3.c: Likewise.

From-SVN: r254140
2017-10-27 10:48:49 +00:00
Paolo Carlini
e89b556baf re PR c++/71385 (Internal compiler error when using concept as placeholder)
2017-10-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71385
	* g++.dg/concepts/pr71385.C: New.

From-SVN: r254139
2017-10-27 10:45:25 +00:00
Paolo Carlini
001ee39a52 re PR c++/80739 (Accessing value of X through a Y glvalue in a constant expression)
2017-10-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80739
	* g++.dg/cpp1y/constexpr-80739.C: New.

From-SVN: r254138
2017-10-27 08:53:08 +00:00
Martin Liska
ddcb1c887b Document --coverage and fork-like functions (PR gcov-profile/82457).
2017-10-27  Martin Liska  <mliska@suse.cz>

	PR gcov-profile/82457
	* doc/invoke.texi: Document that one needs a non-strict ISO mode
	for fork-like functions to be properly instrumented.

From-SVN: r254137
2017-10-27 08:34:56 +00:00
Richard Biener
830717d0a3 re PR middle-end/81659 (ICE in verify_dominators, at dominance.c:1184)
2017-10-27  Richard Biener  <rguenther@suse.de>

	PR middle-end/81659
	* tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
	info when we redirected EH.

	* g++.dg/torture/pr81659.C: New testcase.

From-SVN: r254136
2017-10-27 08:03:16 +00:00
Michael Collison
22be0d084c aarch64.md (<optab>_trunc><vf><GPI:mode>2): New pattern.
2017-10-26  Michael Collison  <michael.collison@arm.com>

	* config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
	New pattern.
	(<optab>_trunchf<GPI:mode>2: New pattern.
	(<optab>_trunc<vgp><GPI:mode>2: New pattern.
	* config/aarch64/iterators.md (wv): New mode attribute.
	(vf, VF): New mode attributes.
	(vgp, VGP): New mode attributes.
	(s): Update attribute with SImode and DImode prefixes.
	* testsuite/gcc.target/aarch64/fix_trunc1.c: New testcase.
	* testsuite/gcc.target/aarch64/vect-vcvt.c: Fix scan-assembler
	directives to allow float or integer destination registers for
	fcvtz[su].

From-SVN: r254133
2017-10-27 06:05:58 +00:00
GCC Administrator
acec245b35 Daily bump.
From-SVN: r254131
2017-10-27 00:16:19 +00:00
Jonathan Wakely
d67be4437a Protect more algorithms from overloaded comma operators
* include/bits/stl_algo.h (__find_if_not_n, generate_n): Cast to void
	to ensure overloaded comma not used.
	* include/bits/stl_algobase.h (__fill_n_a, equal): Likewise.
	* include/bits/stl_uninitialized.h (__uninitialized_fill_n)
	(__uninitialized_fill_n_a, __uninitialized_default_n_1)
	(__uninitialized_default_n_a, __uninitialized_copy_n)
	(__uninitialized_copy_n_pair): Likewise
	* testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc:
	Use test iterator wrappers with overloaded comma operator.
	* testsuite/25_algorithms/fill_n/1.cc: Likewise.
	* testsuite/25_algorithms/generate_n/1.cc: New test.
	* testsuite/25_algorithms/stable_partition/1.cc: New test.
	* testsuite/util/testsuite_iterators.h (operator,): Add deleted
	non-member comma operator with iterator wrappers as right operand.

From-SVN: r254128
2017-10-27 00:50:40 +01:00
Ian Lance Taylor
e1b76fde8f compiler: explicitly convert between type aliases
Otherwise we can get a crash in the backend.
    
    Test case is https://golang.org/cl/73790.
    
    Reviewed-on: https://go-review.googlesource.com/73810

From-SVN: r254126
2017-10-26 23:04:12 +00:00
Sandra Loosemore
1cef1159db constraints.md ("S"): Match r0rel_constant_p too.
2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
	* config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
	* config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
	(nios2_option_overide): Initialize it.  Don't allow R0-relative 
	addressing with PIC.
	(nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
	(nios2_symbolic_constant_p): Likewise.
	(nios2_legitimate_address_p): Likewise.
	(nios2_r0rel_section_name_p): New.
	(nios2_symbol_ref_in_r0rel_data_p): New.
	(nios2_emit_move_sequence): Handle r0rel_constant_p.
	(r0rel_constant_p): New.
	(nios2_print_operand_address): Handle r0rel_constant_p.
	(nios2_cdx_narrow_form_p): Likewise.
	* config/nios2/nios2.opt (mr0rel-sec=): New option.
	* doc/invoke.texi (Option Summary): Add -mr0rel-sec.
	(Nios II Options): Document -mr0rel-sec.

	gcc/testsuite/
	* gcc.target/nios2/gpopt-r0rel-sec.c: New.

From-SVN: r254124
2017-10-26 16:52:15 -04:00
Sandra Loosemore
de10fca02a nios2.c: Include xregex.h.
2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/nios2.c: Include xregex.h.
	(nios2_gprel_sec_regex): New.
	(nios2_option_overide): Initialize it.  Don't allow GP-relative 
	addressing with PIC.
	(nios2_small_section_name_p): Check for regex match.
	* config/nios2/nios2.opt (mgprel-sec=): New option.
	* doc/invoke.texi (Option Summary): Add -mgprel-sec.
	(Nios II Options): Document -mgprel-sec.

	gcc/testsuite/
	* gcc.target/nios2/gpopt-gprel-sec.c: New.

From-SVN: r254123
2017-10-26 16:49:48 -04:00
Jim Wilson
31498bee1a Fix hyphenation build-time path and install-time path.
gcc/
	* doc/invoke.texi (-fdebug-prefix-map): Expand documentation.

From-SVN: r254122
2017-10-26 13:44:58 -07:00
James E Wilson
1cf6c17b6d Add some usage info -fdebug-prefix-map= docs.
gcc/
	* doc/invoke.texi (-fdebug-prefix-map): Expand documentation.

From-SVN: r254121
2017-10-26 13:41:20 -07:00
Tom de Vries
8a866b8296 Fix unsharing of GIMPLE_OMP_{SINGLE,TARGET,TEAMS} in gimple_copy
2017-10-26  Tom de Vries  <tom@codesourcery.com>

	PR tree-optimization/82707
	* gimple.c (gimple_copy): Fix unsharing of
	GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.

From-SVN: r254120
2017-10-26 20:09:24 +00:00
Olga Makhotina
7e23f4a6f8 Adding missing CMP* intrinsics
gcc/
	* config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
	_mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
	_mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
	_mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
	_mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
	_mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
	_mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
	_mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
	_mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
	_mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
	_mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
	_mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
	_mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
	_mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
	_mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
	_mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
	_mm512_mask_cmpunord_ps_mask): New intrinsics.
gcc/testsuite/
	* gcc.target/i386/avx512f-vcmpps-1.c (_mm512_cmpeq_ps_mask,
	_mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
	_mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
	_mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
	_mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
	_mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
	_mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
	_mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
	_mm512_mask_cmpunord_ps_mask): Test new intrinsics.
	* gcc.target/i386/avx512f-vcmpps-2.c (_mm512_cmpeq_ps_mask,
	_mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
	_mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
	_mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
	_mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
	_mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
	_mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
	_mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
	_mm512_mask_cmpunord_ps_mask): Test new intrinsics.
	* gcc.target/i386/avx512f-vcmppd-1.c (_mm512_cmpeq_pd_mask,
	_mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
	_mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
	_mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
	_mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
	_mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
	_mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
	_mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
	_mm512_mask_cmpunord_pd_mask): Test new intrinsics.
	* gcc.target/i386/avx512f-vcmppd-2.c (_mm512_cmpeq_pd_mask,
	_mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
	_mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
	_mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
	_mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
	_mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
	_mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
	_mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
	_mm512_mask_cmpunord_pd_mask): Test new intrinsics.

From-SVN: r254118
2017-10-26 18:18:56 +00:00
Michael Meissner
73b0ac0b82 aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double default to IBM.
[gcc]
2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
	default to IBM.
	* config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
	* config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
	warning to rs6000.c.  Remove the Undocumented flag, since it has
	been documented.
	(-mabi=ibmlongdouble): Likewise.
	* config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
	already set, set the default format for long double.
	(rs6000_debug_reg_global): Print whether long double is IBM or
	IEEE.
	(rs6000_option_override_internal): Rework setting long double
	format.  Only warn if the user is changing the long double default
	and they did not use -Wno-psabi.
	* doc/invoke.texi (PowerPC options): Update the documentation for
	-mabi=ieeelongdouble and -mabi=ibmlongdouble.

From-SVN: r254116
2017-10-26 17:33:38 +00:00
Richard Sandiford
bd5a2c67cf Add wider_subreg_mode helper functions
This patch adds helper functions that say which of the two modes
involved in a subreg is the larger, preferring the outer mode in
the event of a tie.  It also converts IRA and reload to track modes
instead of byte sizes, since this is slightly more convenient when
variable-sized modes are added later.

2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* rtl.h (wider_subreg_mode): New function.
	* ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
	rather than an unsigned int *.
	* ira-color.c (regno_max_ref_width): Replace with...
	(regno_max_ref_mode): ...this new variable.
	(coalesced_pseudo_reg_slot_compare): Update accordingly.
	Use wider_subreg_mode.
	(ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
	rather than an unsigned int *.
	* lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
	(process_alt_operands): Likewise.
	(invariant_p): Likewise.
	* lra-spills.c (assign_mem_slot): Likewise.
	(add_pseudo_to_slot): Likewise.
	* lra.c (collect_non_operand_hard_regs): Likewise.
	(add_regs_to_insn_regno_info): Likewise.
	* reload1.c (regno_max_ref_width): Replace with...
	(regno_max_ref_mode): ...this new variable.
	(reload): Update accordingly.  Update call to
	ira_sort_regnos_for_alter_reg.
	(alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
	(init_eliminable_invariants): Update to use regno_max_ref_mode.
	(scan_paradoxical_subregs): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r254115
2017-10-26 16:53:43 +00:00
Wilco Dijkstra
204d2c03ac Introduce emit_frame_chain
The current frame code combines the separate concepts of a frame chain
(saving old FP,LR in a record and pointing new FP to it) and a frame
pointer used to access locals.  Add emit_frame_chain to the aarch64_frame
descriptor and use it in the prolog and epilog code.  For now just
initialize it as before, so generated code is identical.

Also correctly set EXIT_IGNORE_STACK.  The current AArch64 epilog code 
restores SP from FP if alloca is used.  If a frame pointer is used but
there is no alloca, SP must remain valid for the epilog to work correctly.

    gcc/
	* config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
	(aarch64_frame): Add emit_frame_chain boolean.
	* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
	Move eh_return case to aarch64_layout_frame.
	(aarch64_layout_frame): Initialize emit_frame_chain.
	(aarch64_expand_prologue): Use emit_frame_chain.

From-SVN: r254114
2017-10-26 16:51:37 +00:00
Ville Voutilainen
957f5feacf Deduction guides for associative containers, debug mode deduction guide fixes.
* include/bits/stl_iterator.h (__iter_key_t)
(__iter_val_t, __iter_to_alloc_t): New.
* include/bits/stl_map.h: Add deduction guides.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_set.h: Likewise.
* include/bits/unordered_map.h: Likewise.
* include/bits/unordered_set.h: Likewise.
* include/debug/deque: Likewise.
* include/debug/forward_list: Likewise.
* include/debug/list: Likewise.
* include/debug/map.h: Likewise.
* include/debug/multimap.h: Likewise.
* include/debug/multiset.h: Likewise.
* include/debug/set.h: Likewise.
* include/debug/unordered_map: Likewise.
* include/debug/unordered_set: Likewise.
* include/debug/vector: Likewise.
* testsuite/23_containers/map/cons/deduction.cc: New.
* testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
* testsuite/23_containers/multiset/cons/deduction.cc: Likewise.
* testsuite/23_containers/set/cons/deduction.cc: Likewise.
* testsuite/23_containers/unordered_map/cons/deduction.cc: Likewise.
* testsuite/23_containers/unordered_multimap/cons/deduction.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/cons/deduction.cc:
Likewise.
* testsuite/23_containers/unordered_set/cons/deduction.cc: Likewise.

From-SVN: r254113
2017-10-26 19:42:31 +03:00
Wilco Dijkstra
1f7bffd094 Simplify frame layout for stack probing
This patch makes some changes to the frame layout in order to simplify
stack probing.  We want to use the save of LR as a probe in any non-leaf
function.  With shrinkwrapping we may only save LR before a call, so it
is useful to define a fixed location in the callee-saves. So force LR at
the bottom of the callee-saves even with -fomit-frame-pointer.

Also remove a rarely used frame layout that saves the callee-saves first
with -fomit-frame-pointer.  Doing so allows the store of LR to be used as
a valid stack probe in all frames.

    gcc/
	* config/aarch64/aarch64.c (aarch64_layout_frame):
        Ensure LR is always stored at the bottom of the callee-saves.
        Remove rarely used frame layout which saves callee-saves at top of
        frame, so the store of LR can be used as a valid probe in all cases.

From-SVN: r254112
2017-10-26 16:40:25 +00:00
Wilco Dijkstra
37e4d57b99 Improve addressing of TI/TFmode
In https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01125.html Jiong
pointed out some addressing inefficiencies due to a recent change in
regcprop (https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00775.html).

This patch improves aarch64_legitimize_address_displacement to split
unaligned offsets of TImode and TFmode accesses.  The resulting code
is better and no longer relies on the original regcprop optimization.

For the test we now produce:

	add	x1, sp, 4
	stp	xzr, xzr, [x1, 24]

rather than:

        mov     x1, sp
        add     x1, x1, 28
        stp     xzr, xzr, [x1]

    gcc/
	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
	Improve unaligned TImode/TFmode base/offset split.

    testsuite/
	* gcc.target/aarch64/ldp_stp_unaligned_2.c: New file.

From-SVN: r254111
2017-10-26 16:34:03 +00:00
Richard Sandiford
9eaf97d6d7 Make more use of df_read_modify_subreg_p
This patch uses df_read_modify_subreg_p to check whether writing
to a subreg would preserve some of the existing contents.

This has the effect of putting more emphasis on the
REGMODE_NATURAL_SIZE-based definition of whether something can be
partially modified, instead of using UNITS_PER_WORD unconditionally.
This becomes important for SVE, where UNITS_PER_WORD has no
significance for subregs of multi-register LD2/ST2, LD3/ST3 and
LD4/ST4 tuples.

2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
	* combine.c (find_single_use_1): Likewise.
	(expand_field_assignment): Likewise.
	(move_deaths): Likewise.
	* lra-constraints.c (simplify_operand_subreg): Likewise.
	(curr_insn_transform): Likewise.
	* lra.c (collect_non_operand_hard_regs): Likewise.
	(add_regs_to_insn_regno_info): Likewise.
	* rtlanal.c (reg_referenced_p): Likewise.
	(covers_regno_no_parallel_p): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>

From-SVN: r254110
2017-10-26 16:12:09 +00:00
Richard Sandiford
7984457f82 Stop print_hex from printing bits above the precision
2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* wide-int-print.cc (print_hex): Loop based on extract_uhwi.
	Don't print any bits outside the precision of the value.
	* wide-int.cc (test_printing): Add some new tests.

From-SVN: r254109
2017-10-26 16:09:17 +00:00
James Greenhalgh
18b279715c [obvious][arm testsuite] Fixup expected location in require-pic-register-loc.c
After r254010 we now add -gcolumn-info by default, that means the tests
in gcc.target/arm/require-pic-register-loc.c need adjusting to not expect
to see column zero.

gcc/testsuite/

	* gcc.target/arm/require-pic-register-loc.c: Use wider regex for
	column information.

From-SVN: r254106
2017-10-26 14:17:40 +00:00
Nathan Sidwell
75bafecbd1 [C++ PATCH] Kill IDENTIFIER_LABEL_VALUE
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg01935.html
	* decl.c (sort_labels): Restore function.
	(pop_labels): Sort labels
	(identify_goto): Add translation markup.

From-SVN: r254104
2017-10-26 12:47:14 +00:00
Rainer Orth
8c2e5ecf99 Use -xbrace_comment=no with recent Solaris/x86 as
* configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
	supports -xbrace_comment option.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
	(ASM_CPU_SPEC): Use it.

From-SVN: r254103
2017-10-26 12:22:21 +00:00
Richard Sandiford
f073de07ad This patch adds a new hook that gives the preferred alignment for a static rtx...
TARGET_STATIC_RTX_ALIGNMENT

This patch adds a new hook that gives the preferred alignment for
a static rtx, so that we don't need to query the front end in
force_const_mem.

2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* target.def (static_rtx_alignment): New hook.
	* targhooks.h (default_static_rtx_alignment): Declare.
	* targhooks.c (default_static_rtx_alignment): New function.
	* doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
	* doc/tm.texi: Regenerate.
	* varasm.c (force_const_mem): Use targetm.static_rtx_alignment
	instead of targetm.constant_alignment.  Remove call to
	set_mem_attributes.
	* config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	(cris_preferred_mininum_alignment): New function, split out from...
	(cris_constant_alignment): ...here.
	(cris_static_rtx_alignment): New function.
	* config/i386/i386.c (ix86_static_rtx_alignment): New function,
	split out from...
	(ix86_constant_alignment): ...here.
	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	* config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
	(mmix_static_rtx_alignment): New function.
	* config/spu/spu.c (spu_static_rtx_alignment): New function.
	(TARGET_STATIC_RTX_ALIGNMENT): Redefine.

From-SVN: r254102
2017-10-26 11:28:25 +00:00
Tamar Christina
4bc19a3b1a 2017-10-26 Tamar Christina <tamar.christina@arm.com>
* gcc.dg/vect/vect-reduc-dot-s8a.c
	(dg-additional-options, dg-require-effective-target): Add +dotprod.
	* gcc.dg/vect/vect-reduc-dot-u8a.c
	(dg-additional-options, dg-require-effective-target): Add +dotprod.

From-SVN: r254101
2017-10-26 09:59:14 +00:00
Tamar Christina
2b5de01437 2017-10-26 Tamar Christina <tamar.christina@arm.com>
* lib/target-supports.exp
	(check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache): New.
	(check_effective_target_arm_v8_2a_dotprod_neon_ok): New.
	(add_options_for_arm_v8_2a_dotprod_neon): New.
	(check_effective_target_arm_v8_2a_dotprod_neon_hw): New.
	(check_effective_target_vect_sdot_qi): Add ARM && AArch64.
	(check_effective_target_vect_udot_qi): Likewise.
	* gcc.target/arm/simd/vdot-exec.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vdot-exec.c: New.
	* gcc/doc/sourcebuild.texi: Document arm_v8_2a_dotprod_neon.

From-SVN: r254100
2017-10-26 09:57:09 +00:00
Tamar Christina
c5a9211108 vect-multitypes-1.c: Correct target selector.
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/vect-multitypes-1.c: Correct target selector.

From-SVN: r254099
2017-10-26 06:56:31 +00:00
Tamar Christina
1013465fea re PR target/81800 (On aarch64 ilp32 lrint should not be inlined as two instructions)
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	PR target/81800
	* config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): Add flag_trapping_math
	and flag_fp_int_builtin_inexact.

gcc/testsuite/
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/inline-lrint_2.c (dg-options): Add -fno-trapping-math.

From-SVN: r254098
2017-10-26 06:42:41 +00:00
Tamar Christina
c3ef5fda14 vect-dot-qi.h: New.
2017-10-26  Tamar Christina  <tamar.christina@arm.com>

	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-qi.h: New.
	* gcc.target/aarch64/advsimd-intrinsics/vdot-compile.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-s8.c: New.
	* gcc.target/aarch64/advsimd-intrinsics/vect-dot-u8.c: New.

From-SVN: r254097
2017-10-26 06:39:56 +00:00
GCC Administrator
62fb4acb48 Daily bump.
From-SVN: r254096
2017-10-26 00:16:12 +00:00