Commit Graph

166420 Commits

Author SHA1 Message Date
Jason Merrill b0f422220a PR c++/86205 - ICE with ?: of throw and template-id.
My patch for 64372 removed a bogus lvalue-rvalue conversion for one arm of a
?: expression where the other arm is a throw.  But we still need to require
any overload to be resolved, even though we aren't getting that from
decay_conversion anymore.

	* pt.c (resolve_nondeduced_context_or_error): Split out from...
	* typeck.c (decay_conversion): ...here.
	* call.c (build_conditional_expr_1): Use it.

From-SVN: r268058
2019-01-17 22:58:22 -05:00
Ian Lance Taylor aee6ed4a2c re PR go/88202 (FAIL: runtime/pprof)
PR go/88202
    runtime: in sigprof, skip to sigtrampgo if we don't find sigtramp
    
    Fixes https://gcc.gnu.org/PR88202
    
    Reviewed-on: https://go-review.googlesource.com/c/158218

From-SVN: r268057
2019-01-18 03:29:38 +00:00
Iain Buclaw 151a199f29 libphobos: Add Fiber/Thread support for StackGrowsUp.
The StackGrowsDown version being turned off for hppa targets.

After other fixes in the compiler, this allows core.thread unittests to
all pass, as well as the garbage collector to work correctly.

Backported from upstream druntime 2.084.

Reviewed-on: https://github.com/dlang/druntime/pull/2410

From-SVN: r268056
2019-01-18 01:51:36 +00:00
Iain Buclaw 50deb97073 libphobos: Add platform bindings for hppa-linux-gnu.
Backported from upstream druntime 2.084

Reviewed-on: https://github.com/dlang/druntime/pull/2402

From-SVN: r268055
2019-01-18 00:48:51 +00:00
Steve Ellcey fa95915e47 re PR fortran/88898 ([Regression 9] gomp is broken by r268045)
2018-01-17  Steve Ellcey  <sellcey@cavium.com>

	PR fortran/88898
	* gfortran.dg/gomp/declare-simd-2.f90: Add aarch64 target specifier to
	warning checks.
	* gfortran.dg/gomp/pr79154-1.f90: Ditto.
	* gfortran.dg/gomp/pr83977.f90: Ditto.

From-SVN: r268054
2019-01-18 00:41:40 +00:00
GCC Administrator 7025cc1492 Daily bump.
From-SVN: r268053
2019-01-18 00:16:43 +00:00
Iain Buclaw 5996efcd99 libphobos: Add OSX bindings for core.sys.posix.aio
Backported from upstream druntime 2.084

Reviewed-on: https://github.com/dlang/druntime/pull/2342

From-SVN: r268050
2019-01-18 00:05:51 +00:00
Jakub Jelinek a85f2b9065 re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile error when option mismatch.)
PR target/88734
	* config/aarch64/arm_neon.h: Fix #pragma GCC target syntax - replace
	(("..."))) with ("...").  Use arch=armv8.2-a+sha3 instead of
	arch=armv8.2-a+crypto for vsha512hq_u64 etc. intrinsics.

From-SVN: r268049
2019-01-18 00:34:42 +01:00
Martin Sebor 77efc5c25c PR middle-end/88273 - [8/9 Regression] warning: 'memcpy' offset [-527, -529]
PR middle-end/88273 - [8/9 Regression] warning: 'memcpy' offset [-527, -529]
is out of the bounds [0, 16]

gcc/ChangeLog:

	PR middle-end/88273
	* gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range):
	Handle anti-ranges the same as no range at all.

gcc/testsuite/ChangeLog:

	PR middle-end/88273
	* gcc.dg/Warray-bounds-38.c: New test.

From-SVN: r268048
2019-01-17 15:52:47 -07:00
Tom Honermann 17ad43dd4c Improve the C error for mismatched array string literal initialization.
* c-typeck.c (digest_init): Revised the error message produced for
	ill-formed cases of array initialization with a string literal.
	(error_init): Make variadic.

Co-Authored-By: Jason Merrill <jason@redhat.com>

From-SVN: r268047
2019-01-17 15:43:38 -05:00
Jason Merrill f18aa3a407 PR c++/86740, ICE with constexpr if and nested generic lambdas.
When we partially instantiate the constexpr if, we walk through its body to
see what it uses from the enclosing local_specializations.  That walk was
overlooking the use of 'count' in the captures of the innermost lambda,
because we weren't walking into the capture list.

	* tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.

From-SVN: r268046
2019-01-17 15:36:31 -05:00
Steve Ellcey ba29ed0f57 pr60823-1.c: Add aarch64 specific warning checks and assembler scans.
2018-01-17  Steve Ellcey  <sellcey@cavium.com>

	* c-c++-common/gomp/pr60823-1.c: Add aarch64 specific
	warning checks and assembler scans.
	* c-c++-common/gomp/pr60823-3.c: Ditto.
	* c-c++-common/gomp/pr63328.c: Ditto.
	* g++.dg/gomp/declare-simd-1.C: Ditto.
	* g++.dg/gomp/declare-simd-3.C: Ditto.
	* g++.dg/gomp/declare-simd-4.C: Ditto.
	* g++.dg/gomp/declare-simd-7.C: Ditto.
	* g++.dg/gomp/pr88182.C: Ditto.
	* g++.dg/vect/simd-clone-7.cc: Ditto.
	* gcc.dg/gomp/declare-simd-1.c: Ditto.
	* gcc.dg/gomp/declare-simd-3.c: Ditto.
	* gcc.dg/gomp/pr59669-2.c: Ditto.
	* gcc.dg/gomp/pr87895-1.c: Ditto.
	* gcc.dg/gomp/pr87895-2.c: Ditto.
	* gcc.dg/gomp/simd-clones-2.c: Ditto.
	* gfortran.dg/gomp/declare-simd-2.f90: Ditto.
	* gfortran.dg/gomp/pr79154-1.f90: Ditto.
	* gfortran.dg/gomp/pr83977.f90: Ditto.

From-SVN: r268045
2019-01-17 19:08:12 +00:00
Steve Ellcey d918681480 aarch64.c (cgraph.h): New include.
2018-01-17  Steve Ellcey  <sellcey@cavium.com>

	* config/aarch64/aarch64.c (cgraph.h): New include.
	(intl.h): New include.
	(supported_simd_type): New function.
	(currently_supported_simd_type): Ditto.
	(aarch64_simd_clone_compute_vecsize_and_simdlen): Ditto.
	(aarch64_simd_clone_adjust): Ditto.
	(aarch64_simd_clone_usable): Ditto.
	(TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN): New macro.
	(TARGET_SIMD_CLONE_ADJUST): Ditto.
	(TARGET_SIMD_CLONE_USABLE): Ditto.
	* config/i386/i386.c (ix86_simd_clone_adjust): Add definition check.
	* omp-simd-clone.c (expand_simd_clones): Add targetm.simd_clone.adjust
	call.

From-SVN: r268044
2019-01-17 19:06:37 +00:00
Paolo Carlini 742b6dc476 decl.c (grokdeclarator): Use typespec_loc in error messages about 'auto' and trailing return type.
/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
2019-01-17 18:01:43 +00:00
David Malcolm b9e0367980 C++: Fix ICE when adding overloaded operator via using_decl (PR c++/88699)
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
2019-01-17 17:07:20 +00:00
Martin Sebor 213694e56e PR tree-optimization/88800 - Spurious -Werror=array-bounds for non-taken branch
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
2019-01-17 09:33:55 -07:00
Jonathan Wakely 16d46c7bfd Fix filesystem::equivalent for mingw
* 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
2019-01-17 15:32:10 +00:00
Jonathan Wakely fc6f857bd3 PR libstdc++/88884 fix filesystem::absolute("//") for mingw
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
2019-01-17 15:32:05 +00:00
Jonathan Wakely dd0f7ba273 PR libstdc++/88881 adjust filesystem::status and tests for mingw semantics
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
2019-01-17 15:31:59 +00:00
Tamar Christina a9e48eaada Fix Arm testcase by using NEON.
gcc/testsuite/ChangeLog:

	PR target/88850
	* gcc.target/arm/pr51968.c: Use neon intrinsics.

From-SVN: r268033
2019-01-17 15:17:57 +00:00
Tom de Vries 10f48858e8 [libbacktrace] Add btest_dwz test-case
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
2019-01-17 13:42:30 +00:00
Tom de Vries 1c2a9a37c6 [libbacktrace] Handle DW_FORM_GNU_ref_alt
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
2019-01-17 13:42:20 +00:00
Tom de Vries 9d576782a2 [libbacktrace] Add find_unit
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
2019-01-17 13:42:09 +00:00
Andrew Stubbs 674931d2b7 Port testsuite to GCN
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
2019-01-17 12:37:57 +00:00
Andrew Stubbs b50002c4ef Ignore LLVM's blank lines.
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
2019-01-17 12:36:49 +00:00
Andrew Stubbs 90eb9be6eb Testsuite: GCN is always PIE.
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
2019-01-17 12:36:10 +00:00
Andrew Stubbs 3f21b8e3f7 Add dg-require-effective-target exceptions
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
2019-01-17 12:35:28 +00:00
Andrew Stubbs 7431c1a196 GCN back-end config
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
2019-01-17 12:34:28 +00:00
Andrew Stubbs 5326695a6d GCN back-end code
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
2019-01-17 12:33:19 +00:00
Andrew Stubbs 3d6275e30a GCN machine description
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
2019-01-17 12:31:28 +00:00
Andrew Stubbs 91d7b7fe84 GCN libgcc.
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
2019-01-17 12:29:13 +00:00
Andrew Stubbs 5ab99fa41c GCN libgfortran.
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
2019-01-17 12:27:46 +00:00
Eric Botcazou 3d058ebb6f 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
2019-01-17 12:12:58 +00:00
Tamar Christina 143d3b158a Rename stack-clash protection CFA register to avoid clash
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
2019-01-17 12:06:04 +00:00
Nathan Sidwell e32fc4499f [PR c++/86610] lambda captures in templates
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
2019-01-17 11:56:58 +00:00
Kyrylo Tkachov fc881de282 [AArch64] Initial -mcpu=ares tuning
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
2019-01-17 10:08:55 +00:00
Wei Xiao f6a0213580 avx512f-vfixupimmpd-2.c: Fix the test cases for VFIXUPIMM* intrinsics.
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
2019-01-17 10:01:07 +00:00
Wei Xiao 040d2bbad8 re PR target/88794 (fixupimm intrinsics are unusable)
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
2019-01-17 09:54:56 +00:00
Wei Xiao f4f9a9dc64 re PR target/88794 (fixupimm intrinsics are unusable)
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
2019-01-17 09:34:00 +00:00
Wei Xiao 8a8d6691e8 re PR target/88794 (fixupimm intrinsics are unusable)
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
2019-01-17 08:51:01 +00:00
Richard Biener 63ece937a7 re PR lto/86736 (g++.dg/asan/pr81021.C -O2 -flto -flto-partition=none ICE at dwarf2out.c:31111)
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
2019-01-17 08:45:00 +00:00
Jakub Jelinek cac1bd08d9 re PR tree-optimization/86214 (Strongly increased stack usage)
PR tree-optimization/86214
	* cfgexpand.c (add_stack_var_conflict): Don't add any conflicts
	if x == y.

From-SVN: r268009
2019-01-17 09:05:12 +01:00
Jakub Jelinek 9556b012b7 re PR rtl-optimization/88870 (ICE: Segmentation fault (in df_worklist_propagate_backward))
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
2019-01-17 09:04:28 +01:00
Kewen Lin 404fa41fcf [rs6000] Support more prototypes for vec_ld and vec_st.
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
2019-01-17 07:49:24 +00:00
Alexandre Oliva b00e9be03a [PR87768] reset location wrapper suppression when reentering top level
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
2019-01-17 07:32:29 +00:00
Alexandre Oliva 33f746e558 [PR86648] use auto identifier for class placeholder templates
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
2019-01-17 07:32:16 +00:00
Alexandre Oliva b25a375649 [PR88146] avoid diagnostics diffs if cdtor_returns_this
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
2019-01-17 04:49:55 +00:00
Kewen Lin b0dd8f37fa [PATCH, rs6000, testsuite] Fix PR87306
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
2019-01-17 03:03:38 +00:00
Ian Lance Taylor f41bf58736 runtime: dropg before CAS g status to _Grunnable/_Gwaiting
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
2019-01-17 02:14:28 +00:00
GCC Administrator 63dfd55efc Daily bump.
From-SVN: r267999
2019-01-17 00:16:26 +00:00