1. 17 Jan, 2019 40 commits
    • decl.c (grokdeclarator): Use typespec_loc in error messages about 'auto' and trailing return type. · 742b6dc4
      /cp
      2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* decl.c (grokdeclarator): Use typespec_loc in error messages
      	about 'auto' and trailing return type.
      
      /testsuite
      2019-01-17  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/cpp0x/auto52.C: Test locations too.
      	* g++.dg/cpp0x/trailing2.C: Likewise.
      	* g++.dg/cpp1y/auto-fn18.C: Likewise.
      	* g++.dg/cpp1y/auto-fn25.C: Likewise.
      	* g++.dg/cpp1y/auto-fn52.C: Likewise.
      	* g++.dg/cpp1y/auto-fn53.C: Likewise.
      	* g++.dg/cpp1y/auto-fn54.C: Likewise.
      
      From-SVN: r268043
      Paolo Carlini committed
    • C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699) · b9e03679
      PR c++/88699 reports an ICE within this assertion in add_method:
      
        gcc_assert (!current_fns || !DECL_DESTRUCTOR_P (method));
      
      when adding an overloaded operator to a class via a using_decl, due to
      DECL_DESTRUCTOR_P requiring a FUNCTION_DECL, but "method" being a
      USING_DECL.
      
      This patch weakens the assertion to avoid testing DECL_DESTRUCTOR_P
      for the case where "via_using" is true, fixing the ICE.
      
      gcc/cp/ChangeLog:
      	PR c++/88699
      	* class.c (add_method): Don't use DECL_DESTRUCTOR_P on
      	USING_DECLs.
      
      gcc/testsuite/ChangeLog:
      	PR c++/88699
      	* g++.dg/template/pr88699.C: New test.
      
      From-SVN: r268041
      David Malcolm committed
    • PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken branch · 213694e5
      gcc/ChangeLog:
      
      	PR tree-optimization/88800
      	* gimple-fold.c (gimple_fold_builtin_memory_op): Avoid checking
      	NO_WARNING bit here.  Avoid folding out-of-bounds calls.
      	* gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Remove
      	redundant argument.  Add new argument and issue diagnostics under
      	its control.  Detect out-of-bounds access even with warnings
      	disabled.
      	(check_bounds_or_overlap): Change return type.  Add argument.
      	(wrestrict_dom_walker::check_call): Adjust.
      	* gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Add argument.
      	* tree-ssa-strlen.c (handle_builtin_strcpy): Adjust to change in
      	check_bounds_or_overlap's return value.
      	(handle_builtin_stxncpy): Same.
      	(handle_builtin_strcat): Same.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/88800
      	* c-c++-common/Wrestrict.c: Adjust.
      	* gcc.dg/Warray-bounds-37.c: New test.
      	* gcc.dg/builtin-memcpy-2.c: New test.
      	* gcc.dg/builtin-memcpy.c: New test.
      
      From-SVN: r268037
      Martin Sebor committed
    • Fix filesystem::equivalent for mingw · 16d46c7b
      	* src/c++17/fs_ops.cc
      	(equivalent(const path&, const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Use GetFileInformationByHandle to
      	compare files instead of relying on incomplete info returned by stat.
      
      From-SVN: r268036
      Jonathan Wakely committed
    • PR libstdc++/88884 fix filesystem::absolute("//") for mingw · fc6f857b
      	PR libstdc++/88884
      	* src/c++17/fs_ops.cc (absolute(const path&, error_code&)): Do nothing
      	if the path is already absolute.
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize root-directory.
      	[!_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Pass error_code to current_path.
      
      From-SVN: r268035
      Jonathan Wakely committed
    • PR libstdc++/88881 adjust filesystem::status and tests for mingw semantics · dd0f7ba2
      On Windows stat("foo/bar/../.") will resolve to "foo" even if that is a
      non-directory and "foo/bar" does not exist. This is the expected
      behaviour and consistent with boost::filesystem, so don't try to correct
      it. The only unwanted behaviour is that stat("baz/") fails due to a
      mingw bug (fixed in mingw-w64 v6.0.0) so add a workaround.
      
      	PR libstdc++/88881
      	* src/c++17/fs_ops.cc (canonical(const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Normalize path, to match behaviour
      	of filesystem::exists.
      	(create_directories(const path&, error_code&)): Add assertions.
      	(status(const path&, error_code&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]:
      	Add workaround for bug in _wstat for paths with trailing slash.
      	* testsuite/27_io/filesystem/operations/create_directories.cc: Adjust
      	for expected behaviour on mingw.
      	* testsuite/experimental/filesystem/operations/create_directories.cc:
      	Likewise.
      	* testsuite/27_io/filesystem/operations/temp_directory_path.cc: Use
      	"TMP" instead of "TMPDIR" and clean environment before each test. Do
      	not test permissions on mingw targets.
      
      From-SVN: r268034
      Jonathan Wakely committed
    • Fix Arm testcase by using NEON. · a9e48eaa
      gcc/testsuite/ChangeLog:
      
      	PR target/88850
      	* gcc.target/arm/pr51968.c: Use neon intrinsics.
      
      From-SVN: r268033
      Tamar Christina committed
    • [libbacktrace] Add btest_dwz test-case · 10f48858
      Add test-case to verify that libbacktrace can read debug info that was
      compressed with dwz.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	PR libbacktrace/82857
      	* configure.ac (DWZ): Set with AC_CHECK_PROG.
      	(HAVE_DWZ): Set with AM_CONDITIONAL.
      	* configure: Regenerate.
      	* Makefile.am (TESTS): Add btest_dwz.
      	* Makefile.in: Regenerate.
      
      From-SVN: r268032
      Tom de Vries committed
    • [libbacktrace] Handle DW_FORM_GNU_ref_alt · 1c2a9a37
      Handle DW_FORM_GNU_ref_alt which references the .debug_info section in the
      .gnu_debugaltlink file.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	PR libbacktrace/82857
      	* dwarf.c (enum attr_val_encoding): Add ATTR_VAL_REF_ALT_INFO.
      	(read_attribute): Handle DW_FORM_GNU_ref_alt using
      	ATTR_VAL_REF_ALT_INFO.
      	(read_referenced_name_from_attr): Handle DW_FORM_GNU_ref_alt.
      
      From-SVN: r268031
      Tom de Vries committed
    • [libbacktrace] Add find_unit · 9d576782
      Add a function that finds the unit given an offset into .debug_info.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	* dwarf.c (struct unit): Add low_offset and high_offset fields.
      	(struct unit_vector): New type.
      	(struct dwarf_data): Add units and units_counts fields.
      	(find_unit): New function.
      	(find_address_ranges): Add and handle unit_tag parameter.
      	(build_address_map): Add and handle units_vec parameter.
      	(build_dwarf_data): Pass units_vec to build_address_map.  Store resulting
      	units vector.
      
      From-SVN: r268030
      Tom de Vries committed
    • Port testsuite to GCN · 674931d2
      This collection of miscellaneous patches configures the testsuite to run on AMD
      GCN in a standalone (i.e. not offloading) configuration.  It assumes you have
      your Dejagnu set up to run binaries via the gcn-run tool.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      
      	gcc/
      	* doc/sourcebuild.texi: Document dg-add-options sqrt_insn.
      
      	gcc/testsuite/
      	* gcc.dg/20020312-2.c: Add amdgcn support.
      	* gcc.dg/Wno-frame-address.c: Disable on amdgcn.
      	* gcc.dg/builtin-apply2.c: Likewise.
      	* gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise.
      	* gcc.dg/gimplefe-28.c: Add dg-add-options for sqrt_insn.
      	* gcc.dg/intermod-1.c: Add -mlocal-symbol-id on amdgcn.
      	* gcc.dg/memcmp-1.c: Increase timeout factor.
      	* gcc.dg/pr59605-2.c: Addd -DMAX_COPY=1025 on amdgcn.
      	* gcc.dg/sibcall-10.c: xfail on amdgcn.
      	* gcc.dg/sibcall-9.c: Likewise.
      	* gcc.dg/tree-ssa/gen-vect-11c.c: Likewise.
      	* gcc.dg/tree-ssa/pr84512.c: Likewise.
      	* gcc.dg/tree-ssa/loop-1.c: Adjust expectations for amdgcn.
      	* gfortran.dg/bind_c_array_params_2.f90: Likewise.
      	* lib/target-supports.exp (check_effective_target_trampolines):
      	Configure amdgcn.
      	(check_profiling_available): Likewise.
      	(check_effective_target_global_constructor): Likewise.
      	(check_effective_target_return_address): Likewise.
      	(check_effective_target_fopenacc): Likewise.
      	(check_effective_target_fopenmp): Likewise.
      	(check_effective_target_vect_int): Likewise.
      	(check_effective_target_vect_intfloat_cvt): Likewise.
      	(check_effective_target_vect_uintfloat_cvt): Likewise.
      	(check_effective_target_vect_floatint_cvt): Likewise.
      	(check_effective_target_vect_floatuint_cvt): Likewise.
      	(check_effective_target_vect_simd_clones): Likewise.
      	(check_effective_target_vect_shift): Likewise.
      	(check_effective_target_whole_vector_shift): Likewise.
      	(check_effective_target_vect_bswap): Likewise.
      	(check_effective_target_vect_shift_char): Likewise.
      	(check_effective_target_vect_long): Likewise.
      	(check_effective_target_vect_float): Likewise.
      	(check_effective_target_vect_double): Likewise.
      	(check_effective_target_vect_perm): Likewise.
      	(check_effective_target_vect_perm_byte): Likewise.
      	(check_effective_target_vect_perm_short): Likewise.
      	(check_effective_target_vect_widen_mult_qi_to_hi): Likewise.
      	(check_effective_target_vect_widen_mult_hi_to_si): Likewise.
      	(check_effective_target_vect_widen_mult_qi_to_hi_pattern): Likewise.
      	(check_effective_target_vect_widen_mult_hi_to_si_pattern): Likewise.
      	(check_effective_target_vect_natural_alignment): Likewise.
      	(check_effective_target_vect_fully_masked): Likewise.
      	(check_effective_target_vect_element_align): Likewise.
      	(check_effective_target_vect_masked_store): Likewise.
      	(check_effective_target_vect_scatter_store): Likewise.
      	(check_effective_target_vect_condition): Likewise.
      	(check_effective_target_vect_cond_mixed): Likewise.
      	(check_effective_target_vect_char_mult): Likewise.
      	(check_effective_target_vect_short_mult): Likewise.
      	(check_effective_target_vect_int_mult): Likewise.
      	(check_effective_target_sqrt_insn): Likewise.
      	(check_effective_target_vect_call_sqrtf): Likewise.
      	(check_effective_target_vect_call_btrunc): Likewise.
      	(check_effective_target_vect_call_btruncf): Likewise.
      	(check_effective_target_vect_call_ceil): Likewise.
      	(check_effective_target_vect_call_floorf): Likewise.
      	(check_effective_target_lto): Likewise.
      	(check_vect_support_and_set_flags): Likewise.
      	(check_effective_target_vect_stridedN): Enable when fully masked is
      	available.
      	(add_options_for_sqrt_insn): New procedure.
      
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268028
      Andrew Stubbs committed
    • Ignore LLVM's blank lines. · b50002c4
      The GCN toolchain must use the LLVM assembler and linker because there's no
      binutils port.  The LLVM tools do not have the same diagnostic style as
      binutils, so the "blank line(s) in output" tests are inappropriate (and very
      noisy).
      
      The LLVM tools also have different command line options, so it's not possible
      to autodetect object formats in the same way.
      
      This patch addresses both issues.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* doc/sourcebuild.texi: Document dg-require-effective-target
      	llvm_binutils and offload_gcn.
      
      	gcc/testsuite/
      	* lib/file-format.exp (gcc_target_object_format): Handle AMD GCN.
      	* lib/gcc-dg.exp (gcc-dg-prune): Ignore blank lines from the LLVM
      	linker.
      	* lib/target-supports.exp (check_effective_target_llvm_binutils): New.
      
      From-SVN: r268027
      Andrew Stubbs committed
    • Testsuite: GCN is always PIE. · 90eb9be6
      The GCN/HSA loader ignores the load address and uses a random location, so we
      build all GCN binaries as PIE, by default.
      
      This patch makes the necessary testsuite adjustments to make this work
      correctly.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/testsuite/
      	* gcc.dg/graphite/scop-19.c: Check pie_enabled.
      	* gcc.dg/pic-1.c: Disable on amdgcn.
      	* gcc.dg/pic-2.c: Disable on amdgcn.
      	* gcc.dg/pic-3.c: Disable on amdgcn.
      	* gcc.dg/pic-4.c: Disable on amdgcn.
      	* gcc.dg/pie-3.c: Disable on amdgcn.
      	* gcc.dg/pie-4.c: Disable on amdgcn.
      	* gcc.dg/uninit-19.c: Check pie_enabled.
      	* lib/target-supports.exp (check_effective_target_pie): Add amdgcn.
      
      From-SVN: r268026
      Andrew Stubbs committed
    • Add dg-require-effective-target exceptions · 3f21b8e3
      There are a number of tests that fail because they assume that exceptions are
      available, but GCN does not support them, yet.
      
      This patch adds "dg-require-effective-target exceptions" in all the affected
      tests.  There's probably an automatic way to test for exceptions, but the
      current implementation simply says that AMD GCN does not support them.  This
      should ensure that no other targets are affected by the change.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      
      	gcc/
      	* doc/sourcebuild.texi: Document dg-required-effective-target
      	exceptions.
      
      	gcc/testsuite/
      	* c-c++-common/ubsan/pr71512-1.c: Require exceptions.
      	* c-c++-common/ubsan/pr71512-2.c: Require exceptions.
      	* gcc.c-torture/compile/pr34648.c: Require exceptions.
      	* gcc.c-torture/compile/pr41469.c: Require exceptions.
      	* gcc.dg/20111216-1.c: Require exceptions.
      	* gcc.dg/cleanup-10.c: Require exceptions.
      	* gcc.dg/cleanup-11.c: Require exceptions.
      	* gcc.dg/cleanup-12.c: Require exceptions.
      	* gcc.dg/cleanup-13.c: Require exceptions.
      	* gcc.dg/cleanup-5.c: Require exceptions.
      	* gcc.dg/cleanup-8.c: Require exceptions.
      	* gcc.dg/cleanup-9.c: Require exceptions.
      	* gcc.dg/gomp/pr29955.c: Require exceptions.
      	* gcc.dg/lto/pr52097_0.c: Require exceptions.
      	* gcc.dg/nested-func-5.c: Require exceptions.
      	* gcc.dg/pch/except-1.c: Require exceptions.
      	* gcc.dg/pch/valid-2.c: Require exceptions.
      	* gcc.dg/pr41470.c: Require exceptions.
      	* gcc.dg/pr42427.c: Require exceptions.
      	* gcc.dg/pr44545.c: Require exceptions.
      	* gcc.dg/pr47086.c: Require exceptions.
      	* gcc.dg/pr51481.c: Require exceptions.
      	* gcc.dg/pr51644.c: Require exceptions.
      	* gcc.dg/pr52046.c: Require exceptions.
      	* gcc.dg/pr54669.c: Require exceptions.
      	* gcc.dg/pr56424.c: Require exceptions.
      	* gcc.dg/pr64465.c: Require exceptions.
      	* gcc.dg/pr65802.c: Require exceptions.
      	* gcc.dg/pr67563.c: Require exceptions.
      	* gcc.dg/tree-ssa/pr41469-1.c: Require exceptions.
      	* gcc.dg/tree-ssa/ssa-dse-28.c: Require exceptions.
      	* gcc.dg/vect/pr46663.c: Require exceptions.
      	* lib/target-supports.exp (check_effective_target_exceptions): New.
      
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268025
      Andrew Stubbs committed
    • GCN back-end config · 7431c1a1
      This patch contains the configuration adjustments needed to enable the GCN
      back-end.
      
      The new configure check for dlopen is required to allow building the new
      gcn-run tool.  This tool uses libdl to load the HSA runtime libraries, which
      are required to run programs on the GPU.  The tool is disabled if libdl is not
      available.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      	    Jan Hubicka  <hubicka@ucw.cz>
      	    Martin Jambor  <mjambor@suse.cz>
      
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      	* contrib/config-list.mk: Add amdgcn-amdhsa.
      
      	gcc/
      	* config.gcc: Add amdgcn*-*-amdhsa configuration.
      	* configure.ac: Check for dlopen.
      	* configure: Regenerate.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268024
      Andrew Stubbs committed
    • GCN back-end code · 5326695a
      This patch contains the major part of the GCN back-end.  The machine
      description has been broken out to avoid the mailing list size limit.
      
      The back-end contains various bits that support OpenACC and OpenMP, but the
      middle-end and libgomp patches are missing, as is mkoffload.  I include them
      here because they're harmless and carving up the files seems like unnecessary
      effort.  The remaining offload support will be posted at a later date.
      
      The gcn-run.c is a separate tool that can run a GCN program on a GPU using
      the ROCm drivers and HSA runtime libraries.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      	    Jan Hubicka  <hubicka@ucw.cz>
      	    Martin Jambor  <mjambor@suse.cz>
      
      	gcc/
      	* common/config/gcn/gcn-common.c: New file.
      	* config/gcn/driver-gcn.c: New file.
      	* config/gcn/gcn-builtins.def: New file.
      	* config/gcn/gcn-hsa.h: New file.
      	* config/gcn/gcn-modes.def: New file.
      	* config/gcn/gcn-opts.h: New file.
      	* config/gcn/gcn-passes.def: New file.
      	* config/gcn/gcn-protos.h: New file.
      	* config/gcn/gcn-run.c: New file.
      	* config/gcn/gcn-tree.c: New file.
      	* config/gcn/gcn.c: New file.
      	* config/gcn/gcn.h: New file.
      	* config/gcn/gcn.opt: New file.
      	* config/gcn/t-gcn-hsa: New file.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268023
      Andrew Stubbs committed
    • GCN machine description · 3d6275e3
      This patch contains the machine description portion of the GCN back-end.  I've
      broken it out mainly to avoid the mailing list size limit.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      	    Jan Hubicka  <hubicka@ucw.cz>
      	    Martin Jambor  <mjambor@suse.cz>
      
      	gcc/
      	* config/gcn/constraints.md: New file.
      	* config/gcn/gcn-valu.md: New file.
      	* config/gcn/gcn.md: New file.
      	* config/gcn/predicates.md: New file.
      
      
      Co-Authored-By: Jan Hubicka <hubicka@ucw.cz>
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Martin Jambor <mjambor@suse.cz>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268022
      Andrew Stubbs committed
    • GCN libgcc. · 91d7b7fe
      This patch contains the GCN port of libgcc.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      
      	libgcc/
      	* config.host: Recognize amdgcn*-*-amdhsa.
      	* config/gcn/crt0.c: New file.
      	* config/gcn/lib2-divmod-hi.c: New file.
      	* config/gcn/lib2-divmod.c: New file.
      	* config/gcn/lib2-gcn.h: New file.
      	* config/gcn/sfp-machine.h: New file.
      	* config/gcn/t-amdgcn: New file.
      
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268021
      Andrew Stubbs committed
    • GCN libgfortran. · 5ab99fa4
      This patch contains the GCN port of libgfortran.  We use the minimal
      configuration created for NVPTX.  That's all that's required, besides the
      target-independent bug fixes posted already.
      
      2019-01-17  Andrew Stubbs  <ams@codesourcery.com>
      	    Kwok Cheung Yeung  <kcy@codesourcery.com>
      	    Julian Brown  <julian@codesourcery.com>
      	    Tom de Vries  <tom@codesourcery.com>
      
      	libgfortran/
      	* configure.ac: Use minimal mode for amdgcn.
      	* configure: Regenerate.
      
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Kwok Cheung Yeung <kcy@codesourcery.com>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r268020
      Andrew Stubbs committed
    • gimple-ssa-isolate-paths.c (stmt_uses_name_in_undefined_way): Replace… · 3d058ebb
      gimple-ssa-isolate-paths.c (stmt_uses_name_in_undefined_way): Replace flag_non_call_exceptions with cfun->can_throw_non_call_exceptions.
      
      	* gimple-ssa-isolate-paths.c (stmt_uses_name_in_undefined_way): Replace
      	flag_non_call_exceptions with cfun->can_throw_non_call_exceptions.
      	(stmt_uses_0_or_null_in_undefined_way): Likewise.
      	* tree-ssa-alias.c (same_addr_size_stores_p): Likewise.
      
      From-SVN: r268018
      Eric Botcazou committed
    • Rename stack-clash protection CFA register to avoid clash · 143d3b15
      gcc/ChangeLog:
      
      	PR target/88851
      	* config/aarch64/aarch64.md (STACK_CLASH_SVE_CFA_REGNUM): New.
      	* config/aarch64/aarch64.c (aarch64_allocate_and_probe_stack_space): Use
      	it and document registers.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/88851
      	* gcc.target/aarch64/stack-check-cfa-3.c: Update test.
      
      From-SVN: r268017
      Tamar Christina committed
    • [PR c++/86610] lambda captures in templates · e32fc449
      https://gcc.gnu.org/ml/gcc-patches/2019-01/msg00948.html
      	PR c++/86610
      	* semantics.c (process_outer_var_ref): Only skip dependent types
      	in templates.
      
      	PR c++/86610
      	* g++.dg/cpp0x/pr86610.C: New.
      
      From-SVN: r268016
      Nathan Sidwell committed
    • [AArch64] Initial -mcpu=ares tuning · fc881de2
      This patch adds a tuning struct for the Arm Ares CPU and uses it for -m{cpu,tune}=ares.
      The tunings are an initial attempt and may be improved upon in the future, but they serve
      as a decent starting point for GCC 9.
      
      With this I see a 1.3% improvement on SPEC2006 int and 0.3% on SPEC2006 fp with -mcpu=ares.
      On SPEC2017 I see a 0.6% improvement in intrate and changes in the noise for fprate.
      
              * config/aarch64/aarch64.c (ares_tunings): Define.
              * config/aarch64/aarch64-cores.def (ares): Use the above.
      
      From-SVN: r268015
      Kyrylo Tkachov committed
    • avx512f-vfixupimmpd-2.c: Fix the test cases for VFIXUPIMM* intrinsics. · f6a02135
      gcc/testsuite/ChangeLog
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
      	* gcc.target/i386/avx512f-vfixupimmpd-2.c: Fix the test cases for
      	VFIXUPIMM* intrinsics.
      	* gcc.target/i386/avx512f-vfixupimmps-2.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto.
      
      From-SVN: r268014
      Wei Xiao committed
    • re PR target/88794 (fixupimm intrinsics are unusable) · 040d2bba
      gcc/ChangeLog
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
      	PR target/88794
      	Revert:
      
      	2018-11-06  Wei Xiao  <wei3.xiao@intel.com>
      
      	* config/i386/avx512fintrin.h: Update VFIXUPIMM* intrinsics.
      	(_mm512_fixupimm_round_pd): Update parameters and builtin.
      	(_mm512_maskz_fixupimm_round_pd): Ditto.
      	(_mm512_fixupimm_round_ps): Ditto.
      	(_mm512_maskz_fixupimm_round_ps): Ditto.
      	(_mm_fixupimm_round_sd): Ditto.
      	(_mm_maskz_fixupimm_round_sd): Ditto.
      	(_mm_fixupimm_round_ss): Ditto.
      	(_mm_maskz_fixupimm_round_ss): Ditto.
      	(_mm512_fixupimm_pd): Ditto.
      	(_mm512_maskz_fixupimm_pd): Ditto.
      	(_mm512_fixupimm_ps): Ditto.
      	(_mm512_maskz_fixupimm_ps): Ditto.
      	(_mm_fixupimm_sd): Ditto.
      	(_mm_maskz_fixupimm_sd): Ditto.
      	(_mm_fixupimm_ss): Ditto.
      	(_mm_maskz_fixupimm_ss): Ditto.
      	(_mm512_mask_fixupimm_round_pd): Update builtin.
      	(_mm512_mask_fixupimm_round_ps): Ditto.
      	(_mm_mask_fixupimm_round_sd): Ditto.
      	(_mm_mask_fixupimm_round_ss): Ditto.
      	(_mm512_mask_fixupimm_pd): Ditto.
      	(_mm512_mask_fixupimm_ps): Ditto.
      	(_mm_mask_fixupimm_sd): Ditto.
      	(_mm_mask_fixupimm_ss): Ditto.
      	* config/i386/avx512vlintrin.h:
      	(_mm256_fixupimm_pd): Update parameters and builtin.
      	(_mm256_maskz_fixupimm_pd): Ditto.
      	(_mm256_fixupimm_ps): Ditto.
      	(_mm256_maskz_fixupimm_ps): Ditto.
      	(_mm_fixupimm_pd): Ditto.
      	(_mm_maskz_fixupimm_pd): Ditto.
      	(_mm_fixupimm_ps): Ditto.
      	(_mm_maskz_fixupimm_ps): Ditto.
      	(_mm256_mask_fixupimm_pd): Update builtin.
      	(_mm256_mask_fixupimm_ps): Ditto.
      	(_mm_mask_fixupimm_pd): Ditto.
      	(_mm_mask_fixupimm_ps): Ditto.
      	* config/i386/i386-builtin-types.def: Add new types and remove useless ones.
      	* config/i386/i386-builtin.def: Update builtin definitions.
      	* config/i386/i386.c: Handle new builtin types and remove useless ones.
      	* config/i386/sse.md: Update VFIXUPIMM* patterns.
      	(<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
      	(<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
      	(<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Update.
      	(avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
      	(avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
      	(avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Update.
      	* config/i386/subst.md:
      	(round_saeonly_sd_mask_operand4): Add new subst_attr.
      	(round_saeonly_sd_mask_op4): Ditto.
      	(round_saeonly_expand_operand5): Ditto.
      	(round_saeonly_expand): Update.
      
      gcc/testsuite/ChangeLog
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
      	PR target/88794
      	Revert:
      	2018-11-06  Wei Xiao  <wei3.xiao@intel.com>
      
      	* gcc.target/i386/avx-1.c: Update tests for VFIXUPIMM* intrinsics.
      	* gcc.target/i386/avx512f-vfixupimmpd-1.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmpd-2.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmps-1.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmsd-1.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmsd-2.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmss-1.c: Ditto.
      	* gcc.target/i386/avx512f-vfixupimmss-2.c: Ditto.
      	* gcc.target/i386/avx512vl-vfixupimmpd-1.c: Ditto.
      	* gcc.target/i386/avx512vl-vfixupimmps-1.c: Ditto.
      	* gcc.target/i386/sse-13.c: Ditto.
      	* gcc.target/i386/sse-14.c: Ditto.
      	* gcc.target/i386/sse-22.c: Ditto.
      	* gcc.target/i386/sse-23.c: Ditto.
      	* gcc.target/i386/testimm-10.c: Ditto.
      	* gcc.target/i386/testround-1.c: Ditto.
      
      From-SVN: r268013
      Wei Xiao committed
    • re PR target/88794 (fixupimm intrinsics are unusable) · f4f9a9dc
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
              PR target/88794
              Revert:
              2018-11-12  Wei Xiao  <wei3.xiao@intel.com>
      
              * config/i386/sse.md: Combine VFIXUPIMM* patterns
              (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
              (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
              (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
              (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
              (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
              (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.
      
      From-SVN: r268012
      Wei Xiao committed
    • re PR target/88794 (fixupimm intrinsics are unusable) · 8a8d6691
      gcc/ChangeLog:
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
              PR target/88794
              Revert:
              2018-12-15  Jakub Jelinek  <jakub@redhat.com>
      
              PR target/88489
              * config/i386/sse.md (UNSPEC_SFIXUPIMM): New unspec enumerator.
              (avx512f_sfixupimm<mode><mask_name><round_saeonly_name>): Use it
              instead of UNSPEC_FIXUPIMM.
      
      gcc/testsuite/ChangeLog:
      2019-01-17  Wei Xiao  <wei3.xiao@intel.com>
      
              PR target/88794
              Revert:
              2018-12-15  Jakub Jelinek  <jakub@redhat.com>
      
              PR target/88489
              * gcc.target/i386/avx512vl-vfixupimmsd-2.c: New test.
              * gcc.target/i386/avx512vl-vfixupimmss-2.c: New test.
      
      From-SVN: r268011
      Wei Xiao committed
    • re PR lto/86736 (g++.dg/asan/pr81021.C -O2 -flto -flto-partition=none ICE at dwarf2out.c:31111) · 63ece937
      2019-01-17  Richard Biener  <rguenther@suse.de>
      
      	PR lto/86736
      	* dwarf2out.c (want_pubnames): Never generate pubnames sections
      	and friends for the LTO part of debug info.
      
      From-SVN: r268010
      Richard Biener committed
    • re PR tree-optimization/86214 (Strongly increased stack usage) · cac1bd08
      	PR tree-optimization/86214
      	* cfgexpand.c (add_stack_var_conflict): Don't add any conflicts
      	if x == y.
      
      From-SVN: r268009
      Jakub Jelinek committed
    • re PR rtl-optimization/88870 (ICE: Segmentation fault (in df_worklist_propagate_backward)) · 9556b012
      	PR rtl-optimization/88870
      	* dce.c (deletable_insn_p): Never delete const/pure calls that can
      	throw if we can't alter the cfg or delete dead exceptions.
      	(mark_insn): Don't call find_call_stack_args for such calls.
      
      	* gcc.dg/pr88870.c: New test.
      
      From-SVN: r268008
      Jakub Jelinek committed
    • [rs6000] Support more prototypes for vec_ld and vec_st. · 404fa41f
      2019-01-17  Kewen Lin  <linkw@gcc.gnu.org>
      
      gcc/ChangeLog
          * doc/extend.texi: Add four new prototypes for vec_ld and seven new
          prototypes for vec_st.
          * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add entries
          for scalar address type variants of altivec_vec_ld/altivec_vec_st,
          mainly on signed/unsigned long long and double.
      
      gcc/testsuite/ChangeLog
          * gcc.target/powerpc/altivec_vld_vst_addr.c: New test.
      
      From-SVN: r268007
      Kewen Lin committed
    • [PR87768] reset location wrapper suppression when reentering top level · b00e9be0
      Concepts-checking and other kinds of early tsubsting may often take
      place while location wrappers are suppressed, e.g. because we've
      triggered template instantiation within template parameter lists.
      
      With that, exprs that are usually wrapped by VIEW_CONVERT_EXPRs
      location wrappers may end up wrapped by NON_LVALUE_EXPRs that are not
      marked as location wrappers.  If such NON_LVALUE_EXPRs tsubsted exprs
      undergo another round of tsubsting, say for constraint checking, or
      even for another round of specialization, they will be rejected by
      tsubst_copy_and_build.
      
      This patch arranges for suppress_location_wrappers to be saved and
      reset when pushing to the top level, and restored when popping from
      it.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/87768
      	* cp-tree.h (saved_scope): Add suppress_location_wrappers.
      	* name-lookup.c (do_push_to_top_level): Save and reset it.
      	(do_pop_from_top_level): Restore it.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/87768
      	* g++.dg/concepts/pr87768.C: New.
      
      From-SVN: r268006
      Alexandre Oliva committed
    • [PR86648] use auto identifier for class placeholder templates · 33f746e5
      dwarf2out recognizes unspecified auto types by the identifier.  C++
      template class placeholders are unspecified auto types that take the
      identifier of the class rather than those used by preexisting auto
      types, so dwarf2out ICEs when it finds one of those.  Alas, they may
      be visible to dwarf2out, since the types of e.g. static data members
      of templates are only deduced at member instantiation, i.e., if the
      data member is actually referenced, but the data member is added as a
      field, still with unspecified auto placeholder type, when the
      enclosing class is instantiated.
      
      I've changed placeholder creator to use an auto identifier instead,
      which allowed dropping the placeholder test in C++'s is_auto (alas, it
      can't be used in dwarf2out, think LTO).  To avoid losing information
      in error messages and dumps and whatnot, I've added code to recognize
      placeholders for template classes say A and print them out as
      A<...auto...>.
      
      for  gcc/cp/ChangeLog
      
      	PR c++/86648
              * pt.c (make_template_placeholder): Use auto_identifier.
              (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
              * error.c (dump_type): Handle template placeholders.
              * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/86648
              * gcc.dg/cpp1z/pr86648.C: New.
      
      From-SVN: r268005
      Alexandre Oliva committed
    • [PR88146] avoid diagnostics diffs if cdtor_returns_this · b25a3756
      Diagnostics for testsuite/g++.dg/cpp0x/inh-ctor32.C varied across
      platforms.  Specifically, on ARM, the diagnostics within the subtest
      derived_ctor::inherited_derived_ctor::constexpr_noninherited_ctor did
      not match those displayed on other platforms, and the test failed.
      
      The difference seemed to have to do with locations assigned to ctors,
      but it was more subtle: on ARM, the instantiation of bor's template
      ctor was nested within the instantiation of bar's template ctor
      inherited from bor.  The reason turned out to be related with the
      internal return type of ctors: arm_cxx_cdtor_returns_this is enabled
      for because of AAPCS, while cxx.cdtor_returns_this is disabled on most
      other platforms.  While convert_to_void returns early with a VOID
      expr, the non-VOID return type of the base ctor CALL_EXPR causes
      convert_to_void to inspect the called decl for nodiscard attributes:
      maybe_warn_nodiscard -> cp_get_fndecl_from_callee ->
      maybe_constant_init -> cxx_eval_outermost_constant_expr ->
      instantiate_constexpr_fns -> nested instantiation.
      
      The internal return type assigned to a cdtor should not affect
      instantiation (constexpr or template) decisions, IMHO.  We know it
      affects diagnostics, but I have a hunch this might bring deeper issues
      with it, so I've arranged for the CALL_EXPR handler in convert_to_void
      to disregard cdtors, regardless of the ABI.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/88146
      	* cvt.c (convert_to_void): Handle all cdtor calls as if
      	returning void.
      
      From-SVN: r268004
      Alexandre Oliva committed
    • [PATCH, rs6000, testsuite] Fix PR87306 · b0dd8f37
          PR target/87306
          * gcc.dg/vect/bb-slp-pow-1.c: Modify to reflect that
          the loop is not vectorized on POWER unless hardware 
          misaligned loads are available.
      
      From-SVN: r268003
      Kewen Lin committed
    • runtime: dropg before CAS g status to _Grunnable/_Gwaiting · f41bf587
          
          Currently, we dropg (which clears gp.m) after we CAS the g status
          to _Grunnable or _Gwaiting. Immediately after CASing the g status,
          another thread may CAS it to _Gscan status and scan its stack.
          With precise stack scan, it accesses gp.m in order to switch to g
          and back (in doscanstackswitch). This races with dropg. If
          doscanstackswitch reads gp.m, then dropg runs, when we restore
          the m at the end of the scan it will set to a stale value. Worse,
          if dropg runs after doscanstackswitch sets the new m, gp will be
          running with a nil m.
          
          To fix this, we do dropg before CAS g status to _Grunnable or
          _Gwaiting. We can do this safely if we are CASing from _Grunning,
          as we own the g when it is in _Grunning. There is one case where
          we CAS from _Gsyscall to _Grunnable. It is not safe to dropg when
          it is in _Gsyscall, as precise stack scan needs to read gp.m in
          order to signal the m. So we need to introduce a transient state,
          _Gexitingsyscall, between _Gsyscall and _Grunnable, where the GC
          should not scan its stack.
          
          In is a little unfortunate that we have to add another g status.
          We could reuse an existing one (e.g. _Gcopystack), but it is
          clearer and safer to just use a new one, as Austin suggested.
          
          Reviewed-on: https://go-review.googlesource.com/c/158157
      
      From-SVN: r268001
      Ian Lance Taylor committed
    • Daily bump. · 63dfd55e
      From-SVN: r267999
      GCC Administrator committed
    • [libbacktrace] Handle DW_FORM_GNU_strp_alt · f2f00d3a
      Handle DW_FORM_GNU_strp_alt which references the .debug_str section in the
      .gnu_debugaltlink file.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	PR libbacktrace/82857
      	* dwarf.c (read_attribute): Handle DW_FORM_GNU_strp_alt
      	using altlink.
      
      From-SVN: r267996
      Tom de Vries committed
    • [libbacktrace] Handle alt FORMS without .gnu_debugaltlink · 944f59ff
      Handle DW_FORM_GNU_strp_alt and DW_FORM_GNU_ref_alt references robustly in
      presence of missing .gnu_debugaltlink file.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	* dwarf.c (enum attr_val_encoding): Add ATTR_VAL_NONE.
      	(read_attribute): Add altlink parameter.  Handle missing altlink for
      	DW_FORM_GNU_strp_alt and DW_FORM_GNU_ref_alt.
      	(find_address_ranges, build_address_map, build_dwarf_data): Add and
      	handle altlink parameter.
      	(read_referenced_name, read_function_entry): Add argument to
      	read_attribute call.
      
      From-SVN: r267995
      Tom de Vries committed
    • [libbacktrace] Add altlink field to struct dwarf_data · 9ad458d5
      Add an altlink field to struct dwarf_data, and initialize it with the pointer
      to the struct dwarf_data for the .gnu_debugaltlink.
      
      2019-01-17  Tom de Vries  <tdevries@suse.de>
      
      	* dwarf.c (struct dwarf_data): Add altlink field.
      	(backtrace_dwarf_add): Add and handle fileline_altlink parameter.
      	* elf.c	(elf_add): Add argument to backtrace_dwarf_add call.
      	(phdr_callback, backtrace_initialize): Add argument to elf_add calls.
      	* internal.h (backtrace_dwarf_add): Add fileline_altlink parameter.
      	* pecoff.c (coff_add): Add argument to backtrace_dwarf_add call.
      	* xcoff.c (xcoff_add): Same.
      
      From-SVN: r267994
      Tom de Vries committed