1. 12 Sep, 2017 38 commits
    • Add DW_CFA_AARCH64_negate_ra_state to dwarf2.def/h and dwarfnames.c · ff971abe
        A new vendor CFA DW_CFA_AARCH64_negate_ra_state was introduced for ARMv8.3-A
      return address signing, it is multiplexing DW_CFA_GNU_window_save in CFA vendor
      extension space.
      
        This patch adds necessary code to make it available to external, the GDB
      patch (https://sourceware.org/ml/gdb-patches/2017-08/msg00215.html) is intended
      to use it.
      
        A new DW_CFA_DUP for it is added in dwarf2.def.  The use of DW_CFA_DUP is to
      avoid duplicated case value issue when included in libiberty/dwarfnames.
      
        Native x86 builds OK to make sure no macro expanding errors.
      
      Committed on behalf of Jiong Wang.
      
          include/
      	* dwarf2.def (DW_CFA_AARCH64_negate_ra_state): New DW_CFA_DUP.
      	* dwarf2.h (DW_CFA_DUP): New define.
      
          libiberty/
      	* dwarfnames.c (DW_CFA_DUP): New define.
      
      From-SVN: r252037
      Jiong Wang committed
    • Don't warn function alignment if warn_if_not_aligned_p is true · 12263f13
      When warn_if_not_aligned_p is true, a warning will be issued on function
      declaration later.  There is no need to warn function alignment when
      warn_if_not_aligned_p is true.
      
      	* c-attribs.c (common_handle_aligned_attribute): Don't warn
      	function alignment if warn_if_not_aligned_p is true.
      
      From-SVN: r252036
      H.J. Lu committed
    • re PR other/81096 (test case ttest in libbacktrace fails starting with its introduction in r249111) · 917a804c
      2017-09-12  Steve Ellcey  <sellcey@cavium.com>
      
      	PR other/81096
      	* libbacktrace/Makefile.in
      	(HAVE_PTHREAD_TRUE@@NATIVE_TRUE@ttest_CFLAGS): Add $(AM_CFLAGS)
      
      From-SVN: r252035
      Steve Ellcey committed
    • Add -static-pie to GCC driver to create static PIE · b4fed890
      This patch adds -static-pie to GCC driver to create static PIE.  A static
      position independent executable (PIE) is similar to static executable,
      but can be loaded at any address without a dynamic linker.  All linker
      input files must be compiled with -fpie or -fPIE and linker must support
      --no-dynamic-linker to avoid linking with dynamic linker.  "-z text" is
      also needed to prevent dynamic relocations in read-only segments.
      
      	PR driver/81498
      	* common.opt (-static-pie): New alias.
      	(shared): Negate static-pie.
      	(-no-pie): Update help text.
      	(-pie): Likewise.
      	(static-pie): New option.
      	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
      	-static-pie support.
      	(GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
      	(LINK_EH_SPEC): Likewise.
      	(LINK_GCC_C_SEQUENCE_SPEC): Likewise.
      	* config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
      	* config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
      	* gcc.c (LINK_COMMAND_SPEC): Likewise.
      	(init_gcc_specs): Likewise.
      	(init_spec): Likewise.
      	(display_help): Update help message for -pie.
      	* doc/invoke.texi: Update -pie, -no-pie and -static.  Document
      	-static-pie.
      
      From-SVN: r252034
      H.J. Lu committed
    • Remove '*' from movsi/di/ti patterns · ff76f0b5
      Remove the remaining uses of '*' from the movsi/di/ti patterns.
      Using '*' in alternatives is typically incorrect at it tells the register
      allocator to ignore those alternatives.  So remove these from all the
      integer move patterns.  This removes unnecessary int to float moves, for
      example gcc.target/aarch64/pr62178.c no longer generates a redundant fmov
      since the w = m variant is now allowed.
      
          gcc/
      	* config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
      	(movdi_aarch64): Likewise.
      	(movti_aarch64): Likewise.
      
      From-SVN: r252033
      Wilco Dijkstra committed
    • re PR target/80204 (macosx-version-min wrong for macOS Sierra 10.12.3) · 7d843469
      	PR target/80204
      	* config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
      	calculation of the minor version, always output as 0.
      
      From-SVN: r252029
      Simon Wright committed
    • re PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c:2262) · cbc45bea
      	PR target/82112
      	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
      	ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
      	on it early, rather than manual conversion late.  For
      	ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
      	instead of performing manual conversion.
      
      	* gcc.target/powerpc/pr82112.c: New test.
      	* g++.dg/ext/altivec-18.C: New test.
      
      From-SVN: r252028
      Jakub Jelinek committed
    • altivec.md (vec_widen_umult_even_v4si, [...]): Add define expands for vmuleuw,… · 2afb2668
      altivec.md (vec_widen_umult_even_v4si, [...]): Add define expands for vmuleuw, vmulesw, vmulouw, vmulosw.
      
      gcc/ChangeLog:
      
      2017-09-12  Carl Love  <cel@us.ibm.com>
      
              * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
      	vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
      	vmulouw, vmulosw.
              * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
              VMULOSW): Add definitions.
              * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
              ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
              ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
              * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
              builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
      
      From-SVN: r252027
      Carl Love committed
    • [Patch AArch64 2/2] Fix memory sizes to load/store patterns · db46a2e6
      There seems to be a partial misconception in the AArch64 backend that
      load1/load2 referred to the number of registers to load, rather than the
      number of words to load. This patch fixes that using the new "number of
      byte" types added in the previous patch.
      
      That means using the load_16 and store_16 types that were defined in the
      previous patch for the first time in the AArch64 backend. To ensure
      continuity for scheduling models, I've just split this out from load_8.
      Please update your models if this is very wrong!
      
      ---
      gcc/
      
      	* config/aarch64/aarch64.md (movdi_aarch64): Set load/store
      	types correctly.
      	(movti_aarch64): Likewise.
      	(movdf_aarch64): Likewise.
      	(movtf_aarch64): Likewise.
      	(load_pairdi): Likewise.
      	(store_pairdi): Likewise.
      	(load_pairdf): Likewise.
      	(store_pairdf): Likewise.
      	(loadwb_pair<GPI:mode>_<P:mode>): Likewise.
      	(storewb_pair<GPI:mode>_<P:mode>): Likewise.
      	(ldr_got_small_<mode>): Likewise.
      	(ldr_got_small_28k_<mode>): Likewise.
      	(ldr_got_tiny): Likewise.
      	* config/aarch64/iterators.md (ldst_sz): New.
      	(ldpstp_sz): Likewise.
      	* config/aarch64/thunderx.md (thunderx_storepair): Split store_8
      	to store_16.
      	(thunderx_load): Split load_8 to load_16.
      	* config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
      	load_8 to load_16.
      	(thunderx2t99_storepair_basic): Split store_8 to store_16.
      	* config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
      	(xgene1_store_pair): Split store_8 to store_16.
      	* config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
      	(falkor_st_0_st_sd): Split store_8 to store_16.
      
      From-SVN: r252026
      James Greenhalgh committed
    • [Mechanical Patch ARM/AArch64 1/2] Rename load/store scheduling types to encode data size · 89b2133e
      In the AArch64 backend and scheduling models there is some confusion as to
      what the load1/load2 etc. scheduling types refer to. This leads to us using
      load1/load2 in two contexts - for a variety of 32-bit, 64-bit and 128-bit
      loads in AArch32 and 128-bit loads in AArch64. That leads to an undesirable
      confusion in scheduling.
      
      Fixing it is easy, but mechanical and boring. Essentially,
      
        s/load1/load_4/
        s/load2/load_8/
        s/load3/load_12/
        s/load4/load_16/
        s/store1/store_4/
        s/store2/store_8/
        s/store3/store_12/
        s/store4/store_16/
      
      Across all sorts of pipeline models, and the two backends.
      
      I have intentionally not modified any of the patterns which now look obviously
      incorrect. I'll be doing a second pass over the AArch64 back-end in patch
      2/2 which will fix these bugs.
      
      ---
      gcc/
      
      	* config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
      	and store1/2/3/4 to store_4/8/12/16.
      	* config/aarch64/aarch64.md: Update for rename.
      	* config/arm/arm.md: Likewise.: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/arm/thumb1.md: Likewise.
      	* config/arm/thumb2.md: Likewise.
      	* config/arm/vfp.md: Likewise.
      	* config/arm/arm-generic.md: Likewise.
      	* config/arm/arm1020e.md: Likewise.
      	* config/arm/arm1026ejs.md: Likewise.
      	* config/arm/arm1136jfs.md: Likewise.
      	* config/arm/arm926ejs.md: Likewise.
      	* config/arm/cortex-a15.md: Likewise.
      	* config/arm/cortex-a17.md: Likewise.
      	* config/arm/cortex-a5.md: Likewise.
      	* config/arm/cortex-a53.md: Likewise.
      	* config/arm/cortex-a57.md: Likewise.
      	* config/arm/cortex-a7.md: Likewise.
      	* config/arm/cortex-a8.md: Likewise.
      	* config/arm/cortex-a9.md: Likewise.
      	* config/arm/cortex-m4.md: Likewise.
      	* config/arm/cortex-m7.md: Likewise.
      	* config/arm/cortex-r4.md: Likewise.
      	* config/arm/exynos-m1.md: Likewise.
      	* config/arm/fa526.md: Likewise.
      	* config/arm/fa606te.md: Likewise.
      	* config/arm/fa626te.md: Likewise.
      	* config/arm/fa726te.md: Likewise.
      	* config/arm/fmp626.md: Likewise.
      	* config/arm/iwmmxt.md: Likewise.
      	* config/arm/ldmstm.md: Likewise.
      	* config/arm/marvell-pj4.md: Likewise.
      	* config/arm/xgene1.md: Likewise.
      	* config/aarch64/thunderx.md: Likewise.
      	* config/aarch64/thunderx2t99.md: Likewise.
      	* config/aarch64/falkor.md: Likewise.
      
      From-SVN: r252025
      James Greenhalgh committed
    • Fix GIMPLE FE test (PR testsuite/82114) · 5f33b353
      2017-09-12  Martin Liska  <mliska@suse.cz>
      
      	PR testsuite/82114
      	* gcc.dg/gimplefe-14.c (main): Add handling of case 0.
      
      From-SVN: r252024
      Martin Liska committed
    • c-common.c (field_decl_cmp, [...]): Move to c/c-decl.c. · 6836632e
      	c-family/
      	* c-common.c (field_decl_cmp, resort_data, resort_field_decl_cmp,
      	resort_sorted_fields): Move to c/c-decl.c.
      	* c-common.h (field_decl_cmp, resort_sorted_fields): Delete.
      	(struct sorted_fields_type): Move to c/c-lang.h.
      
      	c/
      	* c-decl.c (field_decl_cmp, resort_data, resort_field_decl_cmp,
      	resort_sorted_fields): Moved from c-family/c-common.c.
      	* c-lang.h (struct sorted_fields_type): Moved from c-family/c-common.h.
      
      From-SVN: r252023
      Nathan Sidwell committed
    • Reduce lookup_attribute memory footprint. · 13bdca74
      2017-09-12  Martin Liska  <mliska@suse.cz>
      
      	* attribs.c (private_lookup_attribute): New function.
      	* attribs.h (private_lookup_attribute): Declared here.
      	(lookup_attribute): Called from this place.
      
      From-SVN: r252022
      Martin Liska committed
    • re PR tree-optimization/82157 (ICE on valid code at -O2 and -O3: cannot update SSA form) · 29545149
      2017-09-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82157
      	* tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
      	stmts with side-effects.
      
      	* gcc.dg/torture/pr82157.c: New testcase.
      
      From-SVN: r252020
      Richard Biener committed
    • PR libstdc++/79433 no #error for including TS headers with wrong -std · d681026d
      	PR libstdc++/79433
      	* include/Makefile.am: Remove <bits/c++14_warning.h>.
      	* include/Makefile.in: Regenerate.
      	* include/bits/c++14_warning.h: Remove.
      	* include/experimental/algorithm: Do not include <c++14_warning.h>.
      	* include/experimental/any: Likewise.
      	* include/experimental/array: Likewise.
      	* include/experimental/bits/erase_if.h: Likewise.
      	* include/experimental/bits/lfts_config.h: Likewise.
      	* include/experimental/bits/shared_ptr.h: Likewise.
      	* include/experimental/bits/string_view.tcc: Likewise.
      	* include/experimental/chrono: Likewise.
      	* include/experimental/deque: Likewise.
      	* include/experimental/filesystem: Do not include <c++0x_warning.h>.
      	* include/experimental/forward_list: Do not include <c++14_warning.h>.
      	* include/experimental/functional: Likewise.
      	* include/experimental/iterator: Likewise.
      	* include/experimental/list: Likewise.
      	* include/experimental/map: Likewise.
      	* include/experimental/memory: Likewise.
      	* include/experimental/numeric: Likewise.
      	* include/experimental/optional: Likewise.
      	* include/experimental/propagate_const: Likewise.
      	* include/experimental/ratio: Likewise.
      	* include/experimental/regex: Likewise.
      	* include/experimental/set: Likewise.
      	* include/experimental/string: Likewise.
      	* include/experimental/string_view: Likewise.
      	* include/experimental/system_error: Likewise.
      	* include/experimental/tuple: Likewise.
      	* include/experimental/type_traits: Likewise.
      	* include/experimental/unordered_map: Likewise.
      	* include/experimental/unordered_set: Likewise.
      	* include/experimental/vector: Likewise.
      	* testsuite/experimental/any/misc/any_cast_neg.cc: Adjust dg-error
      	line number.
      	* testsuite/experimental/array/neg.cc: Likewise.
      	* testsuite/experimental/propagate_const/assignment/move_neg.cc:
      	Likewise.
      	* testsuite/experimental/propagate_const/cons/move_neg.cc: Likewise.
      	* testsuite/experimental/propagate_const/requirements2.cc: Likewise.
      	* testsuite/experimental/propagate_const/requirements3.cc: Likewise.
      	* testsuite/experimental/propagate_const/requirements4.cc: Likewise.
      	* testsuite/experimental/propagate_const/requirements5.cc: Likewise.
      
      From-SVN: r252019
      Jonathan Wakely committed
    • PR libstdc++/79433 no #error for including headers with wrong -std · c6888c62
      	PR libstdc++/79433
      	* doc/xml/manual/status_cxx2017.xml: Update feature-test macros.
      	* doc/html/*: Regenerate.
      	* include/Makefile.am: Remove <bits/c++17_warning.h>.
      	* include/Makefile.in: Regenerate.
      	* include/bits/c++17_warning.h: Remove.
      	* include/bits/string_view.tcc: Do not include <bits/c++17_warning.h>
      	for pre-C++17 modes.
      	* include/std/any: Likewise.
      	(__cpp_lib_any): Define.
      	* include/std/mutex (__cpp_lib_scoped_lock): Adjust value as per new
      	SD-6 draft.
      	* include/std/numeric (__cpp_lib_gcd_lcm): Define as per new SD-6
      	draft.
      	* include/std/optional: Do not include <bits/c++17_warning.h>.
      	(__cpp_lib_optional): Define.
      	* include/std/shared_mutex: Do not include <bits/c++14_warning.h>.
      	* include/std/string_view: Do not include <bits/c++17_warning.h>.
      	(__cpp_lib_string_view): Define.
      	* include/std/variant: Do not include <bits/c++17_warning.h>.
      	(__cpp_lib_variant): Define.
      	* testsuite/20_util/optional/cons/value_neg.cc: Adjust dg-error line
      	numbers.
      	* testsuite/26_numerics/gcd/1.cc: Test for __cpp_lib_gcd_lcm.
      	* testsuite/26_numerics/gcd/gcd_neg.cc: Adjust dg-error line
      	numbers.
      	* testsuite/26_numerics/lcm/1.cc: Test for __cpp_lib_gcd_lcm.
      	* testsuite/26_numerics/lcm/lcm_neg.cc: Adjust dg-error line
      	numbers.
      	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Adjust
      	expected value of __cpp_lib_scoped_lock.
      
      From-SVN: r252018
      Jonathan Wakely committed
    • PR libstdc++/70483 make std::experimental::string_view fully constexpr · 2be7a166
      	PR libstdc++/70483
      	* include/experimental/bits/string_view.tcc (basic_string_view::find)
      	(basic_string_view::rfind, basic_string_view::find_first_of)
      	(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
      	(basic_string_view::find_last_not_of): Add constexpr specifier.
      	* include/experimental/string_view (basic_string_view::remove_prefix)
      	(basic_string_view::remove_suffix, basic_string_view::swap)
      	(basic_string_view::compare, basic_string_view::find)
      	(basic_string_view::rfind, basic_string_view::find_first_of)
      	(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
      	(basic_string_view::find_last_not_of, operator==, operator!=)
      	(operator<, operator>, operator<=, operator>=): Likewise.
      	* testsuite/experimental/string_view/operations/compare/char/70483.cc:
      	New.
      
      From-SVN: r252017
      Jonathan Wakely committed
    • Turn HARD_REGNO_NREGS into a target hook · c43f4279
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood <david.sherwood@arm.com>
      
      gcc/
      	* target.def (hard_regno_nregs): New hook.
      	(class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
      	* targhooks.h (default_hard_regno_nregs): Declare.
      	* targhooks.c (default_hard_regno_nregs): New function.
      	* doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
      	(TARGET_HARD_REGNO_NREGS): ...this hook.
      	(HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
      	(CLASS_MAX_NREGS): Likewise.
      	* doc/tm.texi: Regenerate.
      	* reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
      	instead of HARD_REGNO_NREGS.
      	* rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
      	HARD_REGNO_NREGS in the comment.
      	* config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
      	* config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
      	* config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
      	Return an unsigned int.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
      	* config/arc/arc.h (HARD_REGNO_NREGS): Delete.
      	* config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(arc_hard_regno_nregs): New function.
      	* config/arm/arm.h (HARD_REGNO_NREGS): Delete.
      	* config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(arm_hard_regno_nregs): New function.
      	* config/avr/avr.h (HARD_REGNO_NREGS): Delete.
      	* config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
      	* config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
      	* config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
      	(HARD_REGNO_NREGS): Delete.
      	* config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(cr16_hard_regno_nregs): New function.
      	(cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
      	* config/cris/cris.h (HARD_REGNO_NREGS): Delete.
      	* config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(cris_hard_regno_nregs): New function.
      	* config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
      	* config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
      	(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
      	* config/frv/frv.h (HARD_REGNO_NREGS): Delete.
      	(CLASS_MAX_NREGS): Remove outdated copy of documentation.
      	* config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
      	* config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(frv_hard_regno_nregs): Make static.  Take and return an
      	unsigned int.
      	(frv_class_max_nregs): Remove outdated copy of documentation.
      	* config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
      	* config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
      	* config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
      	* config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
      	* config/i386/i386.h (HARD_REGNO_NREGS): Delete.
      	* config/i386/i386.c (ix86_hard_regno_nregs): New function.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
      	(CLASS_MAX_NREGS): Update comment.
      	* config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(ia64_hard_regno_nregs): New function.
      	* config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
      	* config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
      	* config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
      	* config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
      	* config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
      	an unsigned int.
      	(m32c_hard_regno_nregs): Likewise.  Make static.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
      	* config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
      	* config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(m68k_hard_regno_nregs): New function.
      	* config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
      	* config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
      	* config/mips/mips.h (HARD_REGNO_NREGS): Delete.
      	* config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
      	* config/mips/mips.c (mips_hard_regno_nregs): Make static.
      	Take and return an unsigned int.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
      	(CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
      	* config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
      	* config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
      	* config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
      	* config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
      	* config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(msp430_hard_regno_nregs): Make static.  Take and return an
      	unsigned int.
      	* config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
      	* config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
      	* config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
      	(nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
      	* config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
      	* config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
      	* config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
      	(PA_HARD_REGNO_NREGS): ...this.
      	* config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
      	(PA_HARD_REGNO_NREGS): ...this.
      	* config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(pa_hard_regno_nregs): New function.
      	* config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
      	* config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(pdp11_hard_regno_nregs): New function.
      	* config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
      	* config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(rs6000_hard_regno_nregs_hook): New function.
      	* config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
      	* config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
      	* config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
      	Take and return an unsigned int.  Move earlier in file.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
      	* config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
      	* config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
      	(rl78_hard_regno_nregs): Make static.  Take and return an
      	unsigned int.
      	* config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
      	* config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(rs6000_hard_regno_nregs_hook): New function.
      	* config/rx/rx.h (HARD_REGNO_NREGS): Delete.
      	* config/rx/rx.c (rx_hard_regno_nregs): New function.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/s390/s390.h (HARD_REGNO_NREGS): Delete.
      	* config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
      	instead of HARD_REGNO_NREGS.
      	(s390_hard_regno_nregs): New function.
      	(s390_hard_regno_mode_ok): Add comment from s390.h.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/sh/sh.h (HARD_REGNO_NREGS): Delete.
      	* config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(sh_hard_regno_nregs): New function.
      	(sh_pass_in_reg_p): Use it.
      	* config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
      	* config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(sparc_hard_regno_nregs): New function.
      	* config/spu/spu.h (HARD_REGNO_NREGS): Delete.
      	* config/spu/spu.c (spu_hard_regno_nregs): New function.
      	(spu_function_arg_advance): Use it, supplying a valid register number.
      	(TARGET_HARD_REGNO_NREGS): Redefine.
      	* config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
      	* config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
      	* config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
      	* config/v850/v850.h (HARD_REGNO_NREGS): Delete.
      	* config/vax/vax.h (HARD_REGNO_NREGS): Delete.
      	* config/visium/visium.h (HARD_REGNO_NREGS): Delete.
      	(CLASS_MAX_NREGS): Remove copy of old documentation.
      	* config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	(visium_hard_regno_nregs): New function.
      	(visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
      	* config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
      	* config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
      	xtensa_hard_regno_nregs): New function.
      	* system.h (HARD_REGNO_NREGS): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252016
      Richard Sandiford committed
    • Use hard_regno_nregs instead of HARD_REGNO_NREGS · a93072ca
      This patch converts some places that use HARD_REGNO_NREGS to use
      hard_regno_nregs, in places where the initialisation has obviously
      already taken place.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
      	hard_regno_nregs instead of HARD_REGNO_NREGS.
      	(THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
      	* config/c6x/c6x.c (c6x_expand_prologue): Likewise.
      	(c6x_expand_epilogue): Likewise.
      	* config/frv/frv.c (frv_alloc_temp_reg): Likewise.
      	(frv_read_iacc_argument): Likewise.
      	* config/sh/sh.c: Include regs.h.
      	(sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
      	(regs_used): Likewise.
      	(output_stack_adjust): Likewise.
      	* config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
      	* expmed.c: Include regs.h.
      	(store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
      	* ree.c: Include regs.h.
      	(combine_reaching_defs): Use hard_regno_nregs instead of
      	HARD_REGNO_NREGS.
      	(add_removable_extension): Likewise.
      
      From-SVN: r252015
      Richard Sandiford committed
    • Convert hard_regno_nregs to a function · ad474626
      This patch converts hard_regno_nregs into an inline function, which
      in turn allows hard_regno_nregs to be used as the name of a targetm
      field.  This is just a mechanical change.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* regs.h (hard_regno_nregs): Turn into a function.
      	(end_hard_regno): Update accordingly.
      	* caller-save.c (setup_save_areas): Likewise.
      	(save_call_clobbered_regs): Likewise.
      	(replace_reg_with_saved_mem): Likewise.
      	(insert_restore): Likewise.
      	(insert_save): Likewise.
      	* combine.c (can_change_dest_mode): Likewise.
      	(move_deaths): Likewise.
      	(distribute_notes): Likewise.
      	* config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
      	* config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
      	(rs6000_split_multireg_move): Likewise.
      	(rs6000_register_move_cost): Likewise.
      	(rs6000_memory_move_cost): Likewise.
      	* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
      	(rs6000_split_multireg_move): Likewise.
      	(rs6000_register_move_cost): Likewise.
      	(rs6000_memory_move_cost): Likewise.
      	* cselib.c (cselib_reset_table): Likewise.
      	(cselib_lookup_1): Likewise.
      	* emit-rtl.c (set_mode_and_regno): Likewise.
      	* function.c (aggregate_value_p): Likewise.
      	* ira-color.c (setup_profitable_hard_regs): Likewise.
      	(check_hard_reg_p): Likewise.
      	(calculate_saved_nregs): Likewise.
      	(assign_hard_reg): Likewise.
      	(improve_allocation): Likewise.
      	(calculate_spill_cost): Likewise.
      	* ira-emit.c (modify_move_list): Likewise.
      	* ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
      	(ira_hard_reg_in_set_p): Likewise.
      	* ira.c (setup_reg_mode_hard_regset): Likewise.
      	(clarify_prohibited_class_mode_regs): Likewise.
      	(check_allocation): Likewise.
      	* lra-assigns.c (find_hard_regno_for_1): Likewise.
      	(lra_setup_reg_renumber): Likewise.
      	(setup_try_hard_regno_pseudos): Likewise.
      	(spill_for): Likewise.
      	(assign_hard_regno): Likewise.
      	(setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
      	* lra-constraints.c (in_class_p): Likewise.
      	(lra_constraint_offset): Likewise.
      	(simplify_operand_subreg): Likewise.
      	(lra_constraints): Likewise.
      	(split_reg): Likewise.
      	(split_if_necessary): Likewise.
      	(invariant_p): Likewise.
      	(inherit_in_ebb): Likewise.
      	* lra-lives.c (process_bb_lives): Likewise.
      	* lra-remat.c (reg_overlap_for_remat_p): Likewise.
      	(get_hard_regs): Likewise.
      	(do_remat): Likewise.
      	* lra-spills.c (assign_spill_hard_regs): Likewise.
      	* mode-switching.c (create_pre_exit): Likewise.
      	* postreload.c (reload_combine_recognize_pattern): Likewise.
      	* recog.c (peep2_find_free_register): Likewise.
      	* regcprop.c (kill_value_regno): Likewise.
      	(set_value_regno): Likewise.
      	(copy_value): Likewise.
      	(maybe_mode_change): Likewise.
      	(find_oldest_value_reg): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      	* regrename.c (check_new_reg_p): Likewise.
      	(regrename_do_replace): Likewise.
      	* reload.c (push_reload): Likewise.
      	(combine_reloads): Likewise.
      	(find_dummy_reload): Likewise.
      	(operands_match_p): Likewise.
      	(find_reloads): Likewise.
      	(find_equiv_reg): Likewise.
      	(reload_adjust_reg_for_mode): Likewise.
      	* reload1.c (count_pseudo): Likewise.
      	(count_spilled_pseudo): Likewise.
      	(find_reg): Likewise.
      	(clear_reload_reg_in_use): Likewise.
      	(free_for_value_p): Likewise.
      	(allocate_reload_reg): Likewise.
      	(choose_reload_regs): Likewise.
      	(reload_adjust_reg_for_temp): Likewise.
      	(emit_reload_insns): Likewise.
      	(delete_output_reload): Likewise.
      	* rtlanal.c (subreg_get_info): Likewise.
      	* sched-deps.c (sched_analyze_reg): Likewise.
      	* sel-sched.c (init_regs_for_mode): Likewise.
      	(mark_unavailable_hard_regs): Likewise.
      	(choose_best_reg_1): Likewise.
      	(verify_target_availability): Likewise.
      	* valtrack.c (dead_debug_insert_temp): Likewise.
      	* var-tracking.c (track_loc_p): Likewise.
      	(emit_note_insn_var_location): Likewise.
      	* varasm.c (make_decl_rtl): Likewise.
      	* reginfo.c (choose_hard_reg_mode): Likewise.
      	(init_reg_modes_target): Refer directly to
      	this_target_regs->x_hard_regno_nregs.
      
      From-SVN: r252014
      Richard Sandiford committed
    • Make more use of in_hard_reg_set_p · c1b52c0e
      An upcoming patch will convert hard_regno_nregs into an inline
      function, which in turn allows hard_regno_nregs to be used as the
      name of a targetm field.  This patch rewrites a use that can use
      in_hard_reg_set_p instead.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
      	instead of hard_regno_nregs.
      
      From-SVN: r252013
      Richard Sandiford committed
    • Make more use of end_hard_regno · 4edd6298
      An upcoming patch will convert hard_regno_nregs into an inline
      function, which in turn allows hard_regno_nregs to be used as the
      name of a targetm field.  This patch rewrites uses that can use
      end_hard_regno instead.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
      	end_hard_regno instead of hard_regno_nregs.
      	* config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
      	* config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
      	* config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
      	* ira-color.c (improve_allocation): Likewise.
      	* lra-assigns.c (find_hard_regno_for_1): Likewise.
      	* lra-lives.c (mark_regno_live): Likewise.
      	(mark_regno_dead): Likewise.
      	* lra-remat.c (operand_to_remat): Likewise.
      	* lra.c (collect_non_operand_hard_regs): Likewise.
      	* postreload.c (reload_combine_note_store): Likewise.
      	(move2add_valid_value_p): Likewise.
      	* reload.c (regno_clobbered_p): Likewise.
      
      From-SVN: r252012
      Richard Sandiford committed
    • Make more use of END_REGNO · 036620db
      An upcoming patch will convert hard_regno_nregs into an inline
      function, which in turn allows hard_regno_nregs to be used as the
      name of a targetm field.  This patch rewrites uses that are more
      easily (and efficiently) written as END_REGNO.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
      	hard_regno_nregs.
      	* config/v850/v850.c (v850_reorg): Likewise.
      	* reload.c (refers_to_regno_for_reload_p): Likewise.
      	(find_equiv_reg): Likewise.
      	* reload1.c (reload_reg_reaches_end_p): Likewise.
      
      From-SVN: r252011
      Richard Sandiford committed
    • Make more use of REG_NREGS · 462a99aa
      An upcoming patch will convert hard_regno_nregs into an inline
      function, which in turn allows hard_regno_nregs to be used as the
      name of a targetm field.  This patch rewrites uses that are more
      easily (and efficiently) written as REG_NREGS.
      
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* caller-save.c (add_used_regs): Use REG_NREGS instead of
      	hard_regno_nregs.
      	* config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
      	* config/arm/arm.c (output_move_neon): Likewise.
      	(arm_attr_length_move_neon): Likewise.
      	(neon_split_vcombine): Likewise.
      	* config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
      	(c6x_mark_reg_written): Likewise.
      	(c6x_dwarf_register_span): Likewise.
      	* config/i386/i386.c (ix86_save_reg): Likewise.
      	* config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
      	(rws_access_reg): Likewise.
      	* config/s390/s390.c (s390_call_saved_register_used): Likewise.
      	* mode-switching.c (create_pre_exit): Likewise.
      	* ree.c (combine_reaching_defs): Likewise.
      	(add_removable_extension): Likewise.
      	* regcprop.c (find_oldest_value_reg): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      	* reload.c (reload_inner_reg_of_subreg): Likewise.
      	(push_reload): Likewise.
      	(combine_reloads): Likewise.
      	(find_dummy_reload): Likewise.
      	(reload_adjust_reg_for_mode): Likewise.
      	* reload1.c (find_reload_regs): Likewise.
      	(forget_old_reloads_1): Likewise.
      	(reload_reg_free_for_value_p): Likewise.
      	(reload_adjust_reg_for_temp): Likewise.
      	(emit_reload_insns): Likewise.
      	(delete_output_reload): Likewise.
      	* sel-sched.c (choose_best_reg_1): Likewise.
      	(choose_best_pseudo_reg): Likewise.
      
      From-SVN: r252010
      Richard Sandiford committed
    • Turn SLOW_UNALIGNED_ACCESS into a target hook · e0bd6c9f
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood <david.sherwood@arm.com>
      
      gcc/
      	* defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* target.def (slow_unaligned_access): New hook.
      	* targhooks.h (default_slow_unaligned_access): Declare.
      	* targhooks.c (default_slow_unaligned_access): New function.
      	* doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
      	(TARGET_SLOW_UNALIGNED_ACCESS): ...this.
      	* doc/tm.texi: Regenerate.
      	* config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
      	definition.
      	* config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
      	Redefine.
      	(rs6000_slow_unaligned_access): New function.
      	(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
      	(expand_block_compare): Likewise.
      	(expand_strn_compare): Likewise.
      	(rs6000_rtx_costs): Likewise.
      	* config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
      	(riscv_slow_unaligned_access): Likewise.
      	* config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
      	(riscv_slow_unaligned_access_p): ...this and make static.
      	(riscv_option_override): Update accordingly.
      	(riscv_slow_unaligned_access): New function.
      	(TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
      	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
      	(rs6000_slow_unaligned_access): New function.
      	(rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
      	(rs6000_rtx_costs): Likewise.
      	* config/rs6000/rs6000-string.c (expand_block_compare)
      	(expand_strn_compare): Use targetm.slow_unaligned_access instead
      	of SLOW_UNALIGNED_ACCESS.
      	* config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
      	* calls.c (expand_call): Use targetm.slow_unaligned_access instead
      	of SLOW_UNALIGNED_ACCESS.
      	* expmed.c (simple_mem_bitfield_p): Likewise.
      	* expr.c (alignment_for_piecewise_move): Likewise.
      	(emit_group_load_1): Likewise.
      	(emit_group_store): Likewise.
      	(copy_blkmode_from_reg): Likewise.
      	(emit_push_insn): Likewise.
      	(expand_assignment): Likewise.
      	(store_field): Likewise.
      	(expand_expr_real_1): Likewise.
      	* gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
      	* lra-constraints.c (simplify_operand_subreg): Likewise.
      	* stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
      	* gimple-ssa-store-merging.c: Likewise in block comment at start
      	of file.
      	* tree-ssa-strlen.c: Include target.h.
      	(handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
      	of SLOW_UNALIGNED_ACCESS.
      	* system.h (SLOW_UNALIGNED_ACCESS): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252009
      Richard Sandiford committed
    • PR81285: Fix uninitialised variable in emit_store_flag_int · 41defab3
      2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR rtl-optimization/82185
      	* expmed.c (emit_store_flag_int): Only test tem if it has been
      	initialized.
      
      From-SVN: r252008
      Richard Sandiford committed
    • re PR middle-end/82149 (match.pd: 2919: bad if test ?) · c651dca2
      2017-09-12  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/82149
      	* match.pd ((FTYPE) N CMP CST): Fix typo.
      
      From-SVN: r252007
      Richard Biener committed
    • Add short_call function attribute for MIPS · 8101ec85
      gcc/
      	* config/mips/mips.c (mips_attribute_table): Add 'short_call'
      	attribute.
      	(mips_near_type_p): Add 'short_call' attribute as a synonym
      	for 'near'.
      	* doc/extend.texi (short_call): Document new function attribute.
      
      gcc/testsuite
      
      	* gcc.target/mips/near-far-1.c: Add check for 'short_call'
      	attribute.
      	* gcc.target/mips/near-far-2.c: Likewise.
      	* gcc.target/mips/near-far-3.c: Likewise.
      	* gcc.target/mips/near-far-4.c: Likewise.
      
      From-SVN: r252006
      Simon Atanasyan committed
    • Kill CLASSTYPE_SORTED_FIELDS. · 45e3a33d
      	* cp-tree.h (struct lang_type): Lose sorted_fields member.
      	(CLASSTYPE_SORTED_FIELDS): Delete.
      	* name-lookup.h (set_class_bindings): Add EXTRA arg.
      	* name-lookup.c (fields_linear_search): New, broken out of ...
      	(lookup_field_1): ... here.  Delete remainder of function.
      	(get_class_binding_direct): Reimplement without sorted_fields.
      	(get_class_binding): Rename TYPE arg to KLASS, for consistency.
      	(get_method_slot): Call set_class_binding when creating method_vec
      	on complete type.
      	(method_name_cmp): Order identically named slots.
      	(sorted_fields_type_new): Delete.
      	(field_vc_append_class_fields): Rename to ...
      	(method_vec_append_class_fields): ... here.  Adjust.
      	(field_vec_append_enum_values): Renme to ...
      	(method_vec_append_enum_values): ... here. Adjust.
      	(method_vec_dedup): New.
      	(set_class_bindings): Reimplement.
      	(insert_late_enum_def_bindings): Reimplement.
      
      From-SVN: r252005
      Nathan Sidwell committed
    • name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for consistency. · 20614c86
      	* name-lookup.c (get_class_binding): Rename TYPE arg to KLASS for
      	consistency.
      	(restort_data): Move later.
      	(method_name_cmp, resort_method_name_cmp): Simplify.
      	(resort_type_method_vec): Reformat.
      
      From-SVN: r252004
      Nathan Sidwell committed
    • re PR target/82112 (internal compiler error: in fold_convert_loc, at fold-const.c:2262) · ec33aebb
      	PR target/82112
      	* c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
      	assertion check that in the condition.
      	(get_atomic_generic_size): Likewise.  Before testing if parameter
      	has pointer type, if it has array type, call for C++
      	default_conversion to perform array-to-pointer conversion.
      
      	* c-c++-common/pr82112.c: New test.
      	* gcc.dg/pr82112.c: New test.
      
      From-SVN: r252003
      Jakub Jelinek committed
    • tree-vect-generic.c (expand_vector_operations_1): Do nothing for operations we cannot scalarize. · dee6fc2b
      2017-09-12  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-generic.c (expand_vector_operations_1): Do nothing
      	for operations we cannot scalarize.
      
      From-SVN: r252002
      Richard Biener committed
    • [multiple changes] · b7051481
      2017-09-12  Bob Duff  <duff@adacore.com>
      
      	* sem_warn.adb: Minor comment.
      
      2017-09-12  Bob Duff  <duff@adacore.com>
      
      	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
      	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb: Rename New_Item to
      	be Default_Initialized_Item, and apply pragma Unmodified to it,
      	to suppress the warning.
      
      2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Add early return
      	for access types.
      
      2017-09-12  Yannick Moy  <moy@adacore.com>
      
      	* gnat1drv.adb (Adjust_Global_Switches): Consider Refined_Global
      	together with Global when ignoring one in CodePeer mode.
      
      2017-09-12  Javier Miranda  <miranda@adacore.com>
      
      	* sem_ch3.adb (Analyze_Declarations): In nested
      	package declarations that have a private part enable missing check
      	of the RM rule 13.1.1(11/3): usage names in aspect definitions are
      	resolved at the end of the immediately enclosing declaration list.
      
      From-SVN: r252001
      Arnaud Charlet committed
    • [multiple changes] · fb69239a
      2017-09-12  Bob Duff  <duff@adacore.com>
      
      	* sem_ch6.adb (Analyze_Expression_Function): Initialize Def_Id to
      	Empty.
      
      2017-09-12  Georges-Axel Jaloyan  <jaloyan@adacore.com>
      
      	* debug.adb: Reserving flag -gnatdF for safe pointer checking.
      	* gnat1drv.adb (gnat1drv): Adding the call to the analysis on
      	dF flag.
      	* sem_spark.adb, sem_spark.ads: Implementation of the analysis,
      	in preparation for the evolution of the SPARK language that
      	includes a pointer analysis for checking non-aliasing of access
      	types. The Check_Safe_Pointers function is the entry point, and
      	will traverse the AST and raise compile-time errors everytime
      	it detects non-begign aliasing.  Detailed comments are present
      	in the sem_spark.ads file.
      	* sem_util.adb, sem_util.ads (First_Global, Next_Global): New
      	functions to iterate over the list of globals of a subprogram.
      	* libgnat/system.ads: Add restriction No_Finalization.
      	* gcc-interface/Make-lang.in: Add new file sem_spark.adb and
      	dependency on g-dynhta.adb.
      
      From-SVN: r252000
      Arnaud Charlet committed
    • sem_ch6.adb (Analyze_Expression_Function): Call Check_Dynamically_Tagged_Expression. · 7f9fcce8
      2017-09-12  Bob Duff  <duff@adacore.com>
      
      	* sem_ch6.adb (Analyze_Expression_Function): Call
      	Check_Dynamically_Tagged_Expression.
      	* sem_util.adb (Check_Dynamically_Tagged_Expression): Remove
      	"and then Is_Tagged_Type (Typ)" because there is an earlier
      	"Assert (Is_Tagged_Type (Typ))".
      
      From-SVN: r251999
      Bob Duff committed
    • tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC vectors heap vectors. · cff44c10
      	* tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
      	vectors heap vectors.  Clean up comments.
      	Make visited_bbs a reference.
      	(profitable_jump_thread_path): Make GC
      	vectors heap vectors.  Clean up comments.
      	Misc cleanups.
      	(convert_and_register_jump_thread_path): Make GC vectors heap
      	vectors.
      	(check_subpath_and_update_thread_path): Same.  Clean up comments.
      	Make visited_bbs a reference.
      	(handle_phi): Abstract common code to to
      	register_jump_thread_path_if_profitable.
      	Rename VAR_BB to DEF_BB.
      	Update comments.
      	Make GC vectors heap vectors.
      	Make visited_bbs a reference.
      	(handle_assignment): Same.
      	(register_jump_thread_path_if_profitable): New.
      	(fsm_find_control_statement_thread_paths): Rename VAR_BB to
      	DEF_BB.
      	Make GC	vectors heap vectors.  Clean up comments.
      	Make visited_bbs a reference.
      	(find_jump_threads_backwards): Make visited_bbs live in the stack.
      	* tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
      	comment.
      
      From-SVN: r251998
      Aldy Hernandez committed
    • Daily bump. · ff3e3d99
      From-SVN: r251996
      GCC Administrator committed
  2. 11 Sep, 2017 2 commits
    • PR libstdc++/70483 make std::string_view fully constexpr · c5ae1a27
      	PR libstdc++/70483
      	* include/bits/string_view.tcc (basic_string_view::find)
      	(basic_string_view::rfind, basic_string_view::find_first_of)
      	(basic_string_view::find_last_of, basic_string_view::find_first_not_of)
      	(basic_string_view::find_last_not_of): Add constexpr specifier.
      	* include/std/string_view (basic_string_view::operator=)
      	(basic_string_view::rbegin, basic_string_view::rend)
      	(basic_string_view::crbegin, basic_string_view::crend)
      	(basic_string_view::remove_prefix, basic_string_view::remove_suffix)
      	(basic_string_view::swap, basic_string_view::compare)
      	(basic_string_view::find, basic_string_view::rfind)
      	(basic_string_view::find_first_of, basic_string_view::find_last_of)
      	(basic_string_view::find_first_not_of)
      	(basic_string_view::find_last_not_of, basic_string_view::_M_check)
      	(basic_string_view::_M_limit, operator==, operator!=, operator<)
      	(operator>, operator<=, operator>=): Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
      	char/1.cc: Repeat tests in constexpr context.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_prefix/
      	wchar_t/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
      	char/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/remove_suffix/
      	wchar_t/1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/char/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/char/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/char/3.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operators/char/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/range_access/char/1.cc: Test
      	cbegin, cend, rbegin, rend, crbegin and crend.
      	* testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
      	Remove trailing whitespace.
      	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
      	1.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
      	New.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
      	New.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
      	New.
      	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/
      	2.cc: New.
      
      From-SVN: r251988
      Jonathan Wakely committed
    • xtensa: fix PR target/82181 · 738ae6ee
      2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	* config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
      	words of E_DImode object are reachable by xtensa_uimm8x4 access.
      
      From-SVN: r251986
      Max Filippov committed