1. 24 Oct, 2017 14 commits
    • Add bootstrap-cet.mk to bootstrap GCC with Intel CET · c58a9f35
      Bootstrap GCC with Intel CET by configuring GCC with
      
      --with-build-config="bootstrap-cet bootstrap-debug"
      
      Tested on Linux/i686 and Linux/x86-64.
      
      config/
      
      	* bootstrap-cet.mk: New file.
      
      gcc/
      
      	* doc/install.texi: Document bootstrap-cet.
      
      From-SVN: r254043
      H.J. Lu committed
    • PR82687, g++.dg/asan/default-options-1.C fails with PR82575 fix · 160826fe
      The problem with making discarded symbols hidden is that the
      non-default visibility is sticky.  When symbols other than the
      __gnu_lto ones are discarded that turns out to be a bad idea.
      
      	PR lto/82687
      	PR lto/82575
      	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
      	Only make __gnu_lto symbols hidden.  Delete outdated comment.
      	Silence ISO C warning.
      
      From-SVN: r254042
      Alan Modra committed
    • PR libstdc++/82685 add 'noexcept' to string_view literals · 6a19d2a2
      	PR libstdc++/82685
      	* include/experimental/string_view (operator""sv): Add noexcept.
      	* include/std/string_view (operator""sv): Likewise.
      
      From-SVN: r254041
      Jonathan Wakely committed
    • i386: Don't insert ENDBR at function entrance when called directly · ec8f7ce6
      There is no need to insert ENDBR instruction at function entrance if
      function is only called directly.
      
      gcc/
      
      	PR target/82659
      	* config/i386/i386.c (rest_of_insert_endbranch): Don't insert
      	ENDBR instruction at function entrance if function is only
      	called directly.
      
      gcc/testsuite/
      
      	PR target/82659
      	* gcc.target/i386/cet-label-2.c: New test.
      	* gcc.target/i386/cet-sjlj-4.c: Likewise.
      	* gcc.target/i386/cet-sjlj-5.c: Likewise.
      	* gcc.target/i386/cet-switch-3.c: Likewise.
      	* gcc.target/i386/pr82659-1.c: Likewise.
      	* gcc.target/i386/pr82659-2.c: Likewise.
      	* gcc.target/i386/pr82659-3.c: Likewise.
      	* gcc.target/i386/pr82659-4.c: Likewise.
      	* gcc.target/i386/pr82659-5.c: Likewise.
      	* gcc.target/i386/pr82659-6.c: Likewise.
      
      From-SVN: r254040
      H.J. Lu committed
    • re PR rtl-optimization/82628 (wrong code at -Os on x86_64-linux-gnu in the 32-bit mode) · b7520068
      	PR target/82628
      	* config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
      	patterns to better describe from which operation the CF is computed.
      	(addcarry<mode>_0, subborrow<mode>_0): New patterns.
      	* config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
      	one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
      	is 0, use _0 suffixed expanders instead of emitting a comparison
      	before it.
      
      From-SVN: r254039
      Jakub Jelinek committed
    • Avoid 512-bit mode MOV for prefer-avx256 option in Intel AVX512 configuration · 585a449d
      gcc/
      	* config/i386/i386.md(*movsf_internal, *movdf_internal):
      	Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
      
      From-SVN: r254038
      Sergey Shalnov committed
    • re PR middle-end/82569 (failure in 177.mesa cpu2000 test case after r253530) · bc2a7ceb
      	PR middle-end/82569
      	* tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
      	* expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
      	* loop-iv.c (iv_get_reaching_def): Likewise.
      	* cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the 
      	variable is promoted and the partition contains undefined values.
      
      From-SVN: r254037
      Eric Botcazou committed
    • re PR tree-optimization/82672 ([GRAPHITE] ICE in verify_gimple_in_cfg) · d32bc875
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82672
      	* graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
      	Fold the stmt if we propagated into it.
      
      	* gfortran.dg/graphite/pr82672.f90: New testcase.
      
      From-SVN: r254036
      Richard Biener committed
    • cdx-branch.c: Fix broken test. · 57f6a200
      2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/testsuite/
      	* gcc.target/nios2/cdx-branch.c:  Fix broken test.
      	* gcc.target/nios2/lo-addr-bypass.c: New.
      	* gcc.target/nios2/lo-addr-char.c: New.
      	* gcc.target/nios2/lo-addr-int.c: New.
      	* gcc.target/nios2/lo-addr-pic.c: New.
      	* gcc.target/nios2/lo-addr-short.c: New.
      	* gcc.target/nios2/lo-addr-tls.c: New.
      	* gcc.target/nios2/lo-addr-uchar.c: New.
      	* gcc.target/nios2/lo-addr-ushort.c: New.
      	* gcc.target/nios2/lo-addr-volatile.c: New.
      
      From-SVN: r254035
      Sandra Loosemore committed
    • nios2.c (nios2_rtx_costs): Make costs better reflect reality. · efd5897c
      2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* config/nios2/nios2.c (nios2_rtx_costs): Make costs better
      	reflect reality.
      	(nios2_address_cost): Define.
      	(nios2_legitimize_address): Recognize (exp + constant) directly.
      	(TARGET_ADDRESS_COST): Define.
      
      From-SVN: r254034
      Sandra Loosemore committed
    • nios2-protos.h (nios2_large_constant_p): Declare. · 82348675
      2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
      	(nios2_symbolic_memory_operand_p): Declare.
      	(nios2_split_large_constant): Declare.
      	(nios2_split_symbolic_memory_operand): Declare.
      	* config/nios2/nios2.c: Adjust includes.
      	(nios2_symbolic_constant_allowed): New.
      	(nios2_symbolic_constant_p): New.
      	(nios2_plus_symbolic_constant_p): New.
      	(nios2_valid_addr_expr_p): Recognize addresses involving 
      	symbolic constants.
      	(nios2_legitimate_address_p): Likewise, also LO_SUM.
      	(nios2_symbolic_memory_operand_p): New.
      	(nios2_large_constant_p): New.
      	(nios2_split_large_constant): New.
      	(nios2_split_plus_large_constant): New.
      	(nios2_split_symbolic_memory_operand): New.
      	(nios2_legitimize_address): Code refactoring.  Handle addresses
      	involving symbolic constants.
      	(nios2_emit_move_sequence): Likewise.
      	(nios2_print_operand): Improve error output.
      	(nios2_print_operand_address): Handle LO_SUM.
      	(nios2_cdx_narrow_form_p): Likewise.
      	* config/nios2/nios2.md (movqi_internal): Add splitter for memory
      	operands involving symbolic constants.
      	(movhi_internal, movsi_internal): Likewise.
      	(zero_extendhisi2, zero_extendqi<mode>2): Likewise.
      	(extendhisi2, extendqi<mode>2): Likewise.
      
      From-SVN: r254033
      Sandra Loosemore committed
    • tree-pass.h (PROP_rtl_split_insns): Define. · 6642bfb2
      2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* tree-pass.h (PROP_rtl_split_insns): Define.
      	* recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
      
      From-SVN: r254032
      Sandra Loosemore committed
    • nios2.c (TARGET_LRA_P): Don't override. · a6d9541d
      2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* config/nios2/nios2.c (TARGET_LRA_P): Don't override.
      
      From-SVN: r254031
      Sandra Loosemore committed
    • Daily bump. · 71818649
      From-SVN: r254030
      GCC Administrator committed
  2. 23 Oct, 2017 26 commits
    • re PR c++/80449 (ICE reporting failed partial class template specialization… · 403226f0
      re PR c++/80449 (ICE reporting failed partial class template specialization class template argument deduction)
      
      /cp
      2017-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/80449
      	* semantics.c (finish_compound_literal): Check do_auto_deduction
      	return value for error_mark_node.
      
      /testsuite
      2017-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/80449
      	* g++.dg/cpp1z/class-deduction46.C: New.
      
      From-SVN: r254026
      Paolo Carlini committed
    • re PR debug/82630 (Bogus DW_AT_GNU_call_site_value) · 6b10f174
      	PR debug/82630
      	* target.def (const_not_ok_for_debug_p): Default to
      	default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
      	* targhooks.h (default_const_not_ok_for_debug_p): New declaration.
      	* targhooks.c (default_const_not_ok_for_debug_p): New function.
      	* dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
      	which targetm.const_not_ok_for_debug_p returned true.
      	* config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
      	for UNSPECs.
      	* config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
      	Likewise.
      	* config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
      	* config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
      	UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
      	if !base_term_p.
      	(ix86_const_not_ok_for_debug_p): New function.
      	(i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
      	(TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
      
      	* g++.dg/guality/pr82630.C: New test.
      
      From-SVN: r254025
      Jakub Jelinek committed
    • Add INCLUDE_UNIQUE_PTR and use it (PR bootstrap/82610) · b367de5d
      gcc/ChangeLog:
      	PR bootstrap/82610
      	* system.h: Conditionally include "unique-ptr.h" if
      	INCLUDE_UNIQUE_PTR is defined.
      	* unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
      	of defining INCLUDE_UNIQUE_PTR before including "system.h".
      
      include/ChangeLog:
      	* unique-ptr.h: Make include of <memory> conditional on C++11 or
      	later.
      
      From-SVN: r254024
      David Malcolm committed
    • PR c++/77369 - wrong noexcept handling in C++14 and below · 802561b2
      	* tree.c (strip_typedefs): Canonicalize TYPE_RAISES_EXCEPTIONS.
      
      From-SVN: r254022
      Jason Merrill committed
    • * g++.dg/opt/pr82577: Fix for C++17. · 52c91d3a
      From-SVN: r254021
      Jason Merrill committed
    • re PR target/82662 (ifcvt is not performed on double-word compare) · 33029fa9
      	PR target/82662
      	* gcc.target/i386/pr82662.c: New test.
      
      From-SVN: r254020
      Uros Bizjak committed
    • rl78.md: New define_expand "subdi3". · 5feee954
      * config/rl78/rl78.md: New define_expand "subdi3".
      * config/rl78/subdi3.S: New assembly file.
      * config/rl78/t-rl78: Added subdi3.S to LIB2ADD.
      
      From-SVN: r254019
      Sebastian Perta committed
    • Forgot to add the new file :-P 2017-10-13 Sebastian Perta <sebastian.perta@renesas.com> · 8cb41ec6
      Forgot to add the new file :-P
      2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
      * config/rl78/adddi3.S: New assembly file.
      * config/rl78/t-rl78: Added adddi3.S to LIB2ADD.
      
      From-SVN: r254016
      Sebastian Perta committed
    • re PR c/82681 (c-warn.c:1218: typo in warning message) · d1047465
      	PR c/82681
      	* c-warn.c (warnings_for_convert_and_check): Fix typos.
      
      	* gcc.dg/c90-const-expr-11.c: Fix typos in dg-warning.
      	* gcc.dg/overflow-warn-5.c: Likewise.
      	* gcc.dg/overflow-warn-8.c: Likewise.
      
      From-SVN: r254014
      Marek Polacek committed
    • i386: Skip DF_REF_INSN if DF_REF_INSN_INFO is false · 66f4014d
      We should check DF_REF_INSN_INFO before accessing DF_REF_INSN.
      
      gcc/
      
      	PR target/82673
      	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
      	DF_REF_INSN if DF_REF_INSN_INFO is false.
      
      gcc/testsuite/
      
      	PR target/82673
      	* gcc.target/i386/pr82673.c: New test.
      
      From-SVN: r254013
      H.J. Lu committed
    • i386.c (dimode_scalar_chain::compute_convert_gain): Use xmm_move instead of sse_move. · df41dbaf
      
      	* i386.c (dimode_scalar_chain::compute_convert_gain): Use
      	xmm_move instead of sse_move.
      	(sse_store_index): New function.
      	(ix86_register_move_cost): Be more sensible about mismatch stall;
      	model AVX moves correctly; make difference between sse->integer and
      	integer->sse.
      	(ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
      	moves; make difference between SSE and AVX.
      	* i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
      	and zmm_move. Increase size of sse load and store tables;
      	add unaligned load and store tables; add ssemmx_to_integer.
      	* x86-tune-costs.h: Update all entries according to real 
      	move latencies from Agner Fog's manual and chip documentation.
      
      From-SVN: r254012
      Jan Hubicka committed
    • re PR rtl-optimization/82628 (wrong code at -Os on x86_64-linux-gnu in the 32-bit mode) · 47a6cc4e
      	PR target/82628
      	* config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
      	* config/i386/constraints.md (Wf): New constraint.
      	* config/i386/i386.md (UNSPEC_SBB): New unspec.
      	(cmp<dwi>_doubleword): Removed.
      	(sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
      	(sub<mode>3_carry_ccgz): Use unspec instead of compare.
      	* config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
      	expand with cmp<dwi>_doubleword.  For LTU and GEU use
      	sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
      
      From-SVN: r254011
      Jakub Jelinek committed
    • common.opt (gcolumn-info): Enable by default. · 8008dd1c
      	* common.opt (gcolumn-info): Enable by default.
      	* doc/invoke.texi (gcolumn-info): Document new default.
      
      	* lib/scanasm.exp (dg-function-on-line): Accept optional column info.
      	* gcc.dg/debug/dwarf2/pr53948.c: Likewise.
      	* g++.dg/debug/dwarf2/pr77363.C: Likewise.
      	* gcc.dg/debug/dwarf2/asm-line1.c: Add -gno-column-info to dg-options.
      	* gcc.dg/debug/dwarf2/discriminator.c: Likewise.
      	* g++.dg/debug/dwarf2/typedef6.C: Likewise.
      
      From-SVN: r254010
      Jakub Jelinek committed
    • re PR tree-optimization/82672 ([GRAPHITE] ICE in verify_gimple_in_cfg) · ee76c2f9
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82672
      	* graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
      	Fold the stmt if we propagated into it.
      
      	* gfortran.dg/graphite/pr82672.f90: New testcase.
      
      From-SVN: r254009
      Richard Biener committed
    • Implement C++17 Filesystem library · 641cb5a6
      Based on Filesystem TS implementation, with the changes applied by:
      
      - P0219R1 Relative Paths for Filesystem
      - P0317R1 Directory Entry Caching for Filesystem
      - P0492R2 Resolution of C++17 National Body Comments
      
      Where appropriate code is shared between the TS and C++17
      implementations.
      
      	* include/Makefile.am: Add new headers for C++17 filesystem library.
      	* include/Makefile.in: Regenerate.
      	* include/bits/fs_dir.h: New header, based on Filesystem TS code in
      	include/experimental/bits directory.
      	* include/bits/fs_fwd.h: Likewise.
      	* include/bits/fs_ops.h: Likewise.
      	* include/bits/fs_path.h: Likewise.
      	* include/experimental/bits/fs_dir.h: Rename Doxygen group.
      	* include/experimental/bits/fs_fwd.h: Likewise.
      	* include/experimental/bits/fs_ops.h: Likewise.
      	* include/experimental/bits/fs_path.h: Likewise.
      	* include/experimental/filesystem (filesystem_error::_M_gen_what):
      	Remove inline definition.
      	* include/precompiled/stdc++.h: Add <filesystem> to precompiled
      	header.
      	* include/std/filesystem: New header.
      	* python/libstdcxx/v6/printers.py: Enable printer for std::filesystem
      	paths.
      	* src/filesystem/Makefile.am: Add new files. Compile as C++17.
      	* src/filesystem/Makefile.in: Regenerate.
      	* src/filesystem/cow-dir.cc: Update comment.
      	* src/filesystem/cow-ops.cc: Likewise.
      	* src/filesystem/cow-path.cc: Likewise.
      	* src/filesystem/cow-std-dir.cc: New file.
      	* src/filesystem/cow-std-ops.cc: New file.
      	* src/filesystem/cow-std-path.cc: New file.
      	* src/filesystem/dir-common.h (_Dir_base, get_file_type): New header
      	for common code.
      	* src/filesystem/dir.cc (_Dir): Derive from _Dir_base.
      	(open_dir): Move to _Dir_base constructor.
      	(get_file_type): Move to dir-common.h.
      	(recurse): Move to _Dir_base::should_recurse.
      	* src/filesystem/ops-common.h: New header for common code.
      	* src/filesystem/ops.cc (is_set, make_file_type, make_file_status)
      	(is_not_found_errno, file_time, do_copy_file): Move to ops-common.h.
      	* src/filesystem/path.cc (filesystem_error::_M_gen_what): Define.
      	* src/filesystem/std-dir.cc: New file, based on Filesystem TS code.
      	* src/filesystem/std-ops.cc: Likewise.
      	* src/filesystem/std-dir.cc: Likewise.
      	* testsuite/27_io/filesystem/iterators/directory_iterator.cc: New
      	test.
      	* testsuite/27_io/filesystem/iterators/pop.cc: New test.
      	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
      	New test.
      	* testsuite/27_io/filesystem/operations/absolute.cc: New test.
      	* testsuite/27_io/filesystem/operations/canonical.cc: New test.
      	* testsuite/27_io/filesystem/operations/copy.cc: New test.
      	* testsuite/27_io/filesystem/operations/copy_file.cc: New test.
      	* testsuite/27_io/filesystem/operations/create_directories.cc: New
      	test.
      	* testsuite/27_io/filesystem/operations/create_directory.cc: New test.
      	* testsuite/27_io/filesystem/operations/create_symlink.cc: New test.
      	* testsuite/27_io/filesystem/operations/current_path.cc: New test.
      	* testsuite/27_io/filesystem/operations/equivalent.cc: New test.
      	* testsuite/27_io/filesystem/operations/exists.cc: New test.
      	* testsuite/27_io/filesystem/operations/file_size.cc: New test.
      	* testsuite/27_io/filesystem/operations/is_empty.cc: New test.
      	* testsuite/27_io/filesystem/operations/last_write_time.cc: New test.
      	* testsuite/27_io/filesystem/operations/permissions.cc: New test.
      	* testsuite/27_io/filesystem/operations/proximate.cc: New test.
      	* testsuite/27_io/filesystem/operations/read_symlink.cc: New test.
      	* testsuite/27_io/filesystem/operations/relative.cc: New test.
      	* testsuite/27_io/filesystem/operations/remove_all.cc: New test.
      	* testsuite/27_io/filesystem/operations/space.cc: New test.
      	* testsuite/27_io/filesystem/operations/status.cc: New test.
      	* testsuite/27_io/filesystem/operations/symlink_status.cc: New test.
      	* testsuite/27_io/filesystem/operations/temp_directory_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/operations/weakly_canonical.cc: New test.
      	* testsuite/27_io/filesystem/path/append/path.cc: New test.
      	* testsuite/27_io/filesystem/path/assign/assign.cc: New test.
      	* testsuite/27_io/filesystem/path/assign/copy.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/compare.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/path.cc: New test.
      	* testsuite/27_io/filesystem/path/compare/strings.cc: New test.
      	* testsuite/27_io/filesystem/path/concat/path.cc: New test.
      	* testsuite/27_io/filesystem/path/concat/strings.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/copy.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/default.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/locale.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/range.cc: New test.
      	* testsuite/27_io/filesystem/path/construct/string_view.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/extension.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/filename.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/parent_path.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/relative_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/decompose/root_directory.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/decompose/root_name.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/root_path.cc: New test.
      	* testsuite/27_io/filesystem/path/decompose/stem.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/normal.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/proximate.cc: New test.
      	* testsuite/27_io/filesystem/path/generation/relative.cc: New test.
      	* testsuite/27_io/filesystem/path/generic/generic_string.cc: New test.
      	* testsuite/27_io/filesystem/path/itr/traversal.cc: New test.
      	* testsuite/27_io/filesystem/path/modifiers/clear.cc: New test.
      	* testsuite/27_io/filesystem/path/modifiers/make_preferred.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/remove_filename.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/replace_filename.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/modifiers/swap.cc: New test.
      	* testsuite/27_io/filesystem/path/native/string.cc: New test.
      	* testsuite/27_io/filesystem/path/nonmember/hash_value.cc: New test.
      	* testsuite/27_io/filesystem/path/query/empty.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_extension.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_filename.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_parent_path.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_relative_path.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/query/has_root_directory.cc: New
      	test.
      	* testsuite/27_io/filesystem/path/query/has_root_name.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_root_path.cc: New test.
      	* testsuite/27_io/filesystem/path/query/has_stem.cc: New test.
      	* testsuite/27_io/filesystem/path/query/is_relative.cc: New test.
      	* testsuite/experimental/filesystem/path/construct/string_view.cc:
      	Define USE_FILESYSTEM_TS.
      	* testsuite/util/testsuite_fs.h: Allow use with C++17 paths as well
      	as Filesystem TS.
      
      From-SVN: r254008
      Jonathan Wakely committed
    • tree-ssa-pre.c (bitmap_remove_from_set): Rename to... · 9c71c00f
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
      	(bitmap_remove_expr_from_set): ... this.  All callers call this
      	for non-constant values.
      	(bitmap_set_subtract): Rename to...
      	(bitmap_set_subtract_expressions): ... this.  Adjust and
      	optimize.
      	(bitmap_set_contains_value): Remove superfluous check.
      	(bitmap_set_replace_value): Inline into single caller ...
      	(bitmap_value_replace_in_set): ... here and simplify.
      	(dependent_clean): Merge into ...
      	(clean): ... this using an overload.  Adjust.
      	(prune_clobbered_mems): Adjust.
      	(compute_antic_aux): Likewise.
      	(compute_partial_antic_aux): Likewise.
      
      From-SVN: r254007
      Richard Biener committed
    • re PR c++/77555 (unused inline function in-function static variable accessed… · 2de9164b
      re PR c++/77555 (unused inline function in-function static variable accessed from outside leads to linker error)
      
      2017-10-23  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/77555
      	* g++.dg/torture/pr77555.C: New.
      
      From-SVN: r254006
      Paolo Carlini committed
    • re PR tree-optimization/82129 (ICE in compute_antic, at tree-ssa-pre.c:2447) · 0524367e
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82129
      	Revert
      	2017-08-01  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/81181
      	* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
      	(compute_antic): ... end of iteration here.
      
      From-SVN: r254005
      Richard Biener committed
    • PR libstdc++/82644 document IS 29124 support · 908d1d3a
      Also fix declarations of special functions in C++17, to import them into
      the global namespace in <math.h>, and to prevent defining the
      non-standard hypergeometric functions in strict mode.
      
      	PR libstdc++/82644
      	* doc/xml/manual/intro.xml: Include new section.
      	* doc/xml/manual/status_cxxis29124.xml: New section on IS 29124
      	status.
      	* include/bits/specfun.h [__STRICT_ANSI__] (hyperg, hypergf, hypergl)
      	(conf_hyperg, conf_hypergf, conf_hypergl): Don't declare.
      	* include/c_compatibility/math.h: Import special functions into
      	global namespace for C++17.
      	* testsuite/26_numerics/headers/cmath/82644.cc: New test.
      	* testsuite/26_numerics/headers/cmath/functions_global_c++17.cc: New
      	test.
      
      From-SVN: r254004
      Jonathan Wakely committed
    • Convert STARTING_FRAME_OFFSET to a hook · 2a31c321
      I took the documentation of the FRAME_GROWS_DOWNWARD behaviour from the
      version that was in most header files, since the one in the manual seemed
      less clear.
      
      The patch deliberately keeps FIRST_PARM_OFFSET(FNDECL) in
      microblaze_starting_frame_offset; this seems to be a port-local
      convention and takes advantage of the fact that FIRST_PARM_OFFSET
      doesn't read FNDECL.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* target.def (starting_frame_offset): New hook.
      	* doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
      	(TARGET_STARTING_FRAME_OFFSET): ...this new hook.
      	* doc/tm.texi.in: Regenerate.
      	* hooks.h (hook_hwi_void_0): Declare.
      	* hooks.c (hook_hwi_void_0): New function.
      	* doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
      	STARTING_FRAME_OFFSET.
      	* builtins.c (expand_builtin_setjmp_receiver): Likewise.
      	* reload1.c (reload): Likewise.
      	* cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
      	instead of STARTING_FRAME_OFFSET.
      	* function.c (try_fit_stack_local): Likewise.
      	(assign_stack_local_1): Likewise
      	(instantiate_virtual_regs): Likewise.
      	* rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
      	* config/avr/avr.md (nonlocal_goto_receiver): Likewise.
      	* config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
      	* config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
      	* config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
      	* config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
      	* config/avr/avr.c (avr_starting_frame_offset): Make static and
      	return a HOST_WIDE_INT.
      	(avr_builtin_setjmp_frame_value): Use it instead of
      	STARTING_FRAME_OFFSET.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
      	* config/epiphany/epiphany.c (epiphany_starting_frame_offset):
      	New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
      	* config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
      	(TARGET_CONSTANT_ALIGNMENT): Redefine.
      	* config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
      	* config/lm32/lm32.c (lm32_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
      	* config/m32r/m32r.c (m32r_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
      	* config/microblaze/microblaze.c (microblaze_starting_frame_offset):
      	New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
      	* config/mips/mips.c (mips_compute_frame_info): Refer to
      	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
      	(mips_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
      	* config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
      	* config/mmix/mmix.c (mmix_starting_frame_offset): Make static
      	and return a HOST_WIDE_INT.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	(mmix_initial_elimination_offset): Refer to
      	TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
      	* config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
      	* config/pa/pa.c (pa_starting_frame_offset): New function.
      	(pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
      	(pa_expand_prologue): Likewise.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
      	Redefine.
      	(rs6000_starting_frame_offset): New function.
      	* config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
      	!FRAME_GROWS_DOWNWARD handling to...
      	(RS6000_STARTING_FRAME_OFFSET): ...this new macro.
      	* config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
      	(rs6000_starting_frame_offset): New function.
      	* config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
      	* config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
      	* config/vax/vax.c (vax_starting_frame_offset): New function.
      	(vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
      	* config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
      	(TARGET_STARTING_FRAME_OFFSET): Redefine.
      	* system.h (STARTING_FRAME_OFFSET): Poison.
      
      From-SVN: r254003
      Richard Sandiford committed
    • Use SCALAR_TYPE_MODE in vect_create_epilog_for_reduction · 3ec43c5e
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
      	SCALAR_TYPE_MODE instead of TYPE_MODE.
      
      From-SVN: r254002
      Richard Sandiford committed
    • Use SCALAR_INT_TYPE_MODE in loc_list_from_tree_1 · 1fc50bea
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254001
      Richard Sandiford committed
    • Use scalar_int/float_mode in brig_langhook_type_for_mode · 4603941e
      This follows on from similar changes a couple of months ago and
      is needed when general modes have variable size.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/brig/
      	* brig-lang.c (brig_langhook_type_for_mode): Use scalar_int_mode
      	and scalar_float_mode.
      
      From-SVN: r254000
      Richard Sandiford committed
    • Use scalar_mode in expand_shift_1 · a85cf8e9
      Since this function handles scalar and vector shifts:
      
        machine_mode scalar_mode = mode;
        if (VECTOR_MODE_P (mode))
          scalar_mode = GET_MODE_INNER (mode);
      
      is equivalent to:
      
        scalar_mode = GET_MODE_INNER (mode);
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253999
      Richard Sandiford committed
    • re PR tree-optimization/82129 (ICE in compute_antic, at tree-ssa-pre.c:2447) · eb0e98f8
      2017-10-23  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82129
      	* tree-ssa-pre.c (bitmap_set_and): Remove.
      	(compute_antic_aux): Compute ANTIC_OUT intersection in a way
      	canonicalizing expressions in the set to those with lowest
      	ID rather than taking that from the first edge.
      
      	* gcc.dg/torture/pr82129.c: New testcase.
      
      From-SVN: r253998
      Richard Biener committed
    • Fix HWI + -unsigned in combine.c · 735d873d
      rtx_equal_for_field_assignment_p had:
      
       	x = adjust_address_nv (x, GET_MODE (y),
      			       -subreg_lowpart_offset (GET_MODE (x),
      						       GET_MODE (y)));
      
      But subreg_lowpart_offset returns an unsigned int and
      adjust_address_nv takes a HWI, so a subreg offset of 4 would
      give a memory offset of 0x00000000fffffffffc.
      
      2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* combine.c (rtx_equal_for_field_assignment_p): Use
      	byte_lowpart_offset.
      
      From-SVN: r253997
      Richard Sandiford committed