1. 27 Oct, 2017 22 commits
    • List headers in Makefile in alphabetical order · 5880ce18
      	* include/Makefile.am: Put headers in alphabetical order.
      	* include/Makefile.in: Regenerate.
      
      From-SVN: r254161
      Jonathan Wakely committed
    • Remove noexcept from filesystem iterators and operations (LWG 3013, 3014) · 29453a9f
      	* 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
      Jonathan Wakely committed
    • Make filesystem::file_status default constructor non-explicit (LWG 2787) · 9a3effa4
      	* 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
      Jonathan Wakely committed
    • pt.c (invalid_nontype_parm_type_p): Return a bool instead of an int. · ba05366b
      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
      Paolo Carlini committed
    • re PR fortran/56342 (MATMUL with PARAMETER: Simplification usually doesn't work) · 6c6bde30
      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
      Thomas Koenig committed
    • gimple-ssa-sprintf.c: Include domwalk.h. · a09ca93a
      	* 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
      Jeff Law committed
    • tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle gimple statement locations. · a565d95c
      	* 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
      Jeff Law committed
    • RISC-V: Correct and improve the "-mabi" documentation · f44d7b24
      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
      Palmer Dabbelt committed
    • x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY, [...]): Disable for Haswell and newer CPUs. · 4c249d97
      
      	* config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
      	X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
      
      From-SVN: r254152
      Jan Hubicka committed
    • Fix profiledbootstrap. · 7181cca3
      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
      Martin Liska committed
    • Provide filesystem::path overloads for file streams (LWG 2676, partial) · d49f254a
      	* 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
      Jonathan Wakely committed
    • * gcc.target/i386/pr70021.c: Add -mtune=skylake. · 9333319b
      From-SVN: r254147
      Jan Hubicka committed
    • re PR target/82703 (Wrong addition of std::array components with -O2… · 76ff5c24
      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
      Jakub Jelinek committed
    • Define std::filesystem::path::format enum (P0430R2) · 0348dd00
      	* 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
      Jonathan Wakely committed
    • Update install.texi for Solaris 12 rename · 57e7db04
      	* 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
      Rainer Orth committed
    • Extend ipa-pure-const pass to propagate malloc attribute. · 0fab169b
      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
      Prathamesh Kulkarni committed
    • re PR c++/71385 (Internal compiler error when using concept as placeholder) · e89b556b
      2017-10-27  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/71385
      	* g++.dg/concepts/pr71385.C: New.
      
      From-SVN: r254139
      Paolo Carlini committed
    • re PR c++/80739 (Accessing value of X through a Y glvalue in a constant expression) · 001ee39a
      2017-10-27  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/80739
      	* g++.dg/cpp1y/constexpr-80739.C: New.
      
      From-SVN: r254138
      Paolo Carlini committed
    • Document --coverage and fork-like functions (PR gcov-profile/82457). · ddcb1c88
      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
      Martin Liska committed
    • re PR middle-end/81659 (ICE in verify_dominators, at dominance.c:1184) · 830717d0
      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
      Richard Biener committed
    • aarch64.md (<optab>_trunc><vf><GPI:mode>2): New pattern. · 22be0d08
      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
      Michael Collison committed
    • Daily bump. · acec245b
      From-SVN: r254131
      GCC Administrator committed
  2. 26 Oct, 2017 18 commits
    • Protect more algorithms from overloaded comma operators · d67be443
      	* 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
      Jonathan Wakely committed
    • compiler: explicitly convert between type aliases · e1b76fde
          
          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
      Ian Lance Taylor committed
    • constraints.md ("S"): Match r0rel_constant_p too. · 1cef1159
      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
      Sandra Loosemore committed
    • nios2.c: Include xregex.h. · de10fca0
      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
      Sandra Loosemore committed
    • Fix hyphenation build-time path and install-time path. · 31498bee
      	gcc/
      	* doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
      
      From-SVN: r254122
      Jim Wilson committed
    • Add some usage info -fdebug-prefix-map= docs. · 1cf6c17b
      	gcc/
      	* doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
      
      From-SVN: r254121
      James E Wilson committed
    • Fix unsharing of GIMPLE_OMP_{SINGLE,TARGET,TEAMS} in gimple_copy · 8a866b82
      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
      Tom de Vries committed
    • Adding missing CMP* intrinsics · 7e23f4a6
      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
      Olga Makhotina committed
    • aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double default to IBM. · 73b0ac0b
      [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
      Michael Meissner committed
    • Add wider_subreg_mode helper functions · bd5a2c67
      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
      Richard Sandiford committed
    • Introduce emit_frame_chain · 204d2c03
      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
      Wilco Dijkstra committed
    • Deduction guides for associative containers, debug mode deduction guide fixes. · 957f5fea
      * 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
      Ville Voutilainen committed
    • Simplify frame layout for stack probing · 1f7bffd0
      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
      Wilco Dijkstra committed
    • Improve addressing of TI/TFmode · 37e4d57b
      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
      Wilco Dijkstra committed
    • Make more use of df_read_modify_subreg_p · 9eaf97d6
      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
      Richard Sandiford committed
    • Stop print_hex from printing bits above the precision · 7984457f
      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
      Richard Sandiford committed
    • [obvious][arm testsuite] Fixup expected location in require-pic-register-loc.c · 18b27971
      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
      James Greenhalgh committed
    • [C++ PATCH] Kill IDENTIFIER_LABEL_VALUE · 75bafecb
      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
      Nathan Sidwell committed