Iain Buclaw [Fri, 18 Jan 2019 00:05:51 +0000 (00:05 +0000)]
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
Jakub Jelinek [Thu, 17 Jan 2019 23:34:42 +0000 (00:34 +0100)]
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
Martin Sebor [Thu, 17 Jan 2019 22:52:47 +0000 (22:52 +0000)]
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
Tom Honermann [Thu, 17 Jan 2019 20:43:38 +0000 (20:43 +0000)]
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
Jason Merrill [Thu, 17 Jan 2019 20:36:31 +0000 (15:36 -0500)]
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
Steve Ellcey [Thu, 17 Jan 2019 19:08:12 +0000 (19:08 +0000)]
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
Steve Ellcey [Thu, 17 Jan 2019 19:06:37 +0000 (19:06 +0000)]
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
Paolo Carlini [Thu, 17 Jan 2019 18:01:43 +0000 (18:01 +0000)]
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
David Malcolm [Thu, 17 Jan 2019 17:07:20 +0000 (17:07 +0000)]
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
Martin Sebor [Thu, 17 Jan 2019 16:33:55 +0000 (16:33 +0000)]
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
Jonathan Wakely [Thu, 17 Jan 2019 15:32:10 +0000 (15:32 +0000)]
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
Jonathan Wakely [Thu, 17 Jan 2019 15:32:05 +0000 (15:32 +0000)]
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
Jonathan Wakely [Thu, 17 Jan 2019 15:31:59 +0000 (15:31 +0000)]
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
Tamar Christina [Thu, 17 Jan 2019 15:17:57 +0000 (15:17 +0000)]
Fix Arm testcase by using NEON.
gcc/testsuite/ChangeLog:
PR target/88850
* gcc.target/arm/pr51968.c: Use neon intrinsics.
From-SVN: r268033
Tom de Vries [Thu, 17 Jan 2019 13:42:30 +0000 (13:42 +0000)]
[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
Tom de Vries [Thu, 17 Jan 2019 13:42:20 +0000 (13:42 +0000)]
[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
Tom de Vries [Thu, 17 Jan 2019 13:42:09 +0000 (13:42 +0000)]
[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
Andrew Stubbs [Thu, 17 Jan 2019 12:37:57 +0000 (12:37 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:36:49 +0000 (12:36 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:36:10 +0000 (12:36 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:35:28 +0000 (12:35 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:34:28 +0000 (12:34 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:33:19 +0000 (12:33 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:31:28 +0000 (12:31 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:29:13 +0000 (12:29 +0000)]
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
Andrew Stubbs [Thu, 17 Jan 2019 12:27:46 +0000 (12:27 +0000)]
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
Eric Botcazou [Thu, 17 Jan 2019 12:12:58 +0000 (12:12 +0000)]
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
Tamar Christina [Thu, 17 Jan 2019 12:06:04 +0000 (12:06 +0000)]
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
Nathan Sidwell [Thu, 17 Jan 2019 11:56:58 +0000 (11:56 +0000)]
[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
Kyrylo Tkachov [Thu, 17 Jan 2019 10:08:55 +0000 (10:08 +0000)]
[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
Wei Xiao [Thu, 17 Jan 2019 10:01:07 +0000 (10:01 +0000)]
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
Wei Xiao [Thu, 17 Jan 2019 09:54:56 +0000 (09:54 +0000)]
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
Wei Xiao [Thu, 17 Jan 2019 09:34:00 +0000 (09:34 +0000)]
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
Wei Xiao [Thu, 17 Jan 2019 08:51:01 +0000 (08:51 +0000)]
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
Richard Biener [Thu, 17 Jan 2019 08:45:00 +0000 (08:45 +0000)]
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
Jakub Jelinek [Thu, 17 Jan 2019 08:05:12 +0000 (09:05 +0100)]
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
Jakub Jelinek [Thu, 17 Jan 2019 08:04:28 +0000 (09:04 +0100)]
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
Kewen Lin [Thu, 17 Jan 2019 07:49:24 +0000 (07:49 +0000)]
[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
Alexandre Oliva [Thu, 17 Jan 2019 07:32:29 +0000 (07:32 +0000)]
[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
Alexandre Oliva [Thu, 17 Jan 2019 07:32:16 +0000 (07:32 +0000)]
[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
Alexandre Oliva [Thu, 17 Jan 2019 04:49:55 +0000 (04:49 +0000)]
[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
Kewen Lin [Thu, 17 Jan 2019 03:03:38 +0000 (03:03 +0000)]
[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
Ian Lance Taylor [Thu, 17 Jan 2019 02:14:28 +0000 (02:14 +0000)]
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
GCC Administrator [Thu, 17 Jan 2019 00:16:26 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267999
Tom de Vries [Thu, 17 Jan 2019 00:08:05 +0000 (00:08 +0000)]
[libbacktrace] Handle DW_FORM_GNU_strp_alt
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 [Thu, 17 Jan 2019 00:07:53 +0000 (00:07 +0000)]
[libbacktrace] Handle alt FORMS without .gnu_debugaltlink
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 [Thu, 17 Jan 2019 00:07:43 +0000 (00:07 +0000)]
[libbacktrace] Add altlink field to struct dwarf_data
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 [Thu, 17 Jan 2019 00:07:32 +0000 (00:07 +0000)]
[libbacktrace] Return struct dwarf_data pointer from elf_add
Allow the caller of elf_add access to the struct dwarf_data pointer
corresponding to the added elf.
2019-01-17 Tom de Vries <tdevries@suse.de>
* internal.h (backtrace_dwarf_add): Add fileline_entry parameter.
* dwarf.c (backtrace_dwarf_add): Add and handle fileline_entry parameter.
* elf.c (elf_add): Add and handle fileline_entry parameter. Add
argument to backtrace_dwarf_add call.
(phdr_callback, backtrace_initialize): Add argument to elf_add calls.
* pecoff.c (coff_add): Add argument to backtrace_dwarf_add call.
* xcoff.c (xcoff_add): Same.
From-SVN: r267993
Tom de Vries [Thu, 17 Jan 2019 00:07:21 +0000 (00:07 +0000)]
[libbacktrace] Read .gnu_debugaltlink
Read the elf file pointed at by the .gnu_debugaltlink section, and verify that
the build id matches.
2019-01-17 Tom de Vries <tdevries@suse.de>
* elf.c (elf_add): Add and handle with_buildid_data and
with_buildid_size parameters. Handle .gnu_debugaltlink section.
(phdr_callback, backtrace_initialize): Add arguments to elf_add calls.
From-SVN: r267992
Jonathan Wakely [Wed, 16 Jan 2019 23:11:10 +0000 (23:11 +0000)]
Fix failing filesystem tests on mingw targets
* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Add exports for fstream
constructors and open members taking wide strings. Fix patterns for
filesystem::path members to match wstring_view parameters. Add
exports for shared_ptr members used by directory iterators.
* src/c++17/fs_ops.cc (remove(const path&, error_code&)): Clear the
error code parameter if the file doesn't exist.
* src/filesystem/ops.cc (remove(const path&, error_code&)):
Likewise.
* testsuite/27_io/filesystem/operations/canonical.cc: Fix expected
values for mingw targets, where "/" is not an absolute path. Do not
test symlinks on mingw targets.
* testsuite/experimental/filesystem/operations/canonical.cc: Likewise.
* testsuite/27_io/filesystem/operations/copy.cc: Do not test symlinks
on mingw targets.
* testsuite/experimental/filesystem/operations/copy.cc: Likewise.
* testsuite/27_io/filesystem/operations/create_directories.cc: Check
that each component of the path is created.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Likewise.
* testsuite/27_io/filesystem/operations/exists.cc: Do not test
permissions on mingw targets.
* testsuite/experimental/filesystem/operations/exists.cc: Likewise.
* testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
* testsuite/experimental/filesystem/operations/is_empty.cc: Likewise.
* testsuite/27_io/filesystem/operations/permissions.cc: XFAIL for
mingw targets.
* testsuite/experimental/filesystem/operations/permissions.cc:
Likewise.
* testsuite/27_io/filesystem/operations/remove.cc: Do not test
symlinks or permissions on mingw targets.
* testsuite/experimental/filesystem/operations/remove.cc: Likewise.
* testsuite/27_io/filesystem/operations/remove_all.cc: Do not test
symlinks on mingw targets.
* testsuite/experimental/filesystem/operations/remove_all.cc:
Likewise.
* testsuite/27_io/filesystem/operations/status.cc: Do not test
permissions on mingw targets.
* testsuite/27_io/filesystem/operations/weakly_canonical.cc: Do not
test symlinks on mingw targets.
* testsuite/experimental/filesystem/operations/space.cc: Fix test
for mingw targets.
From-SVN: r267991
Ian Lance Taylor [Wed, 16 Jan 2019 22:38:33 +0000 (22:38 +0000)]
syscall: mark C syscall functions noescape
Many C syscall functions take pointer arguments. The pointers
don't escape in the C functions. Mark the C functions noescape so
calling them doesn't need allocation.
Reviewed-on: https://go-review.googlesource.com/c/158158
From-SVN: r267989
Tom de Vries [Wed, 16 Jan 2019 20:47:02 +0000 (20:47 +0000)]
[libbacktrace] Factor out read_referenced_name_from_attr
Factor out the common handling of DW_AT_abstract_origin and
DW_AT_specification from read_function_entry and read_referenced_name.
2019-01-16 Tom de Vries <tdevries@suse.de>
* dwarf.c (read_referenced_name_from_attr): New function. Factor out
of ...
(read_referenced_name): ... here, and ...
(read_function_entry): ... here.
From-SVN: r267986
Iain Buclaw [Wed, 16 Jan 2019 20:40:21 +0000 (20:40 +0000)]
[D] Fix failing EH execution test on i386.
Turn off partitioning unless it was explicitly requested, as it doesn't
work with D exception chaining, where personality routines use LSDA to
determine whether two thrown exceptions are in the same context.
The following distills what was failing in the D testsuite.
```
try {
try {
fn(); // throws "1"
}
finally {
throw new Exception("2");
}
}
catch (Exception e) {
assert(e.msg == "1");
assert(e.next.msg == "2");
}
```
gcc/d/ChangeLog:
PR d/87824
* d-lang.cc (d_post_options): Disable implicit
-forder-blocks-and-partition.
From-SVN: r267985
David Malcolm [Wed, 16 Jan 2019 20:13:23 +0000 (20:13 +0000)]
Fix ICE due to "combine" creating unreachable EH blocks (PR target/88861)
PR target/88861 reports an ICE in "ce2" due to an unreachable
basic block.
The block becomes unreachable in "combine" when delete_noop_moves
deletes an insn with a REG_EH_REGION, deleting the EH edge, the
only edge leading to the basic block.
Normally, rest_of_handle_combine would call cleanup_cfg, deleting
unreachable blocks, if combine_instructions returns true, and
combine_instructions does return true for some cases of edge-removal,
but it doesn't for this case, leading to the ICE.
This patch updates delete_noop_moves so that it returns true if
it deletes any edges, and passes that through to combine_instructions,
so that it too will return true if any edges were deleted, ensuring that
cleanup_cfg will be called by rest_of_handle_combine for this case,
deleting the now-unreachable block, and fixing the ICE.
gcc/ChangeLog:
PR target/88861
* combine.c (delete_noop_moves): Convert to "bool" return,
returning true if any edges are eliminated.
(combine_instructions): Also return true if delete_noop_moves
returns true.
gcc/testsuite/ChangeLog:
PR target/88861
* g++.dg/torture/pr88861.C: New test.
From-SVN: r267984
Tamar Christina [Wed, 16 Jan 2019 18:29:00 +0000 (18:29 +0000)]
aarch64-builtins.c (aarch64_simd_expand_args): Use correct max nunits for endian swap.
2019-01-16 Tamar Christina <tamar.christina@arm.com>
* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
correct max nunits for endian swap.
(aarch64_expand_fcmla_builtin): Correct subreg code.
* config/aarch64/aarch64-simd.md (aarch64_fcmla_lane<rot><mode>,
aarch64_fcmla_laneq<rot>v4hf, aarch64_fcmlaq_lane<rot><mode>): Correct
lane endianness.
From-SVN: r267983
Tamar Christina [Wed, 16 Jan 2019 17:50:38 +0000 (17:50 +0000)]
Fix PR88046 on AArch64 and Arm bare metal targets.
gcc/testsuite/ChangeLog:
PR debug/88046
* g++.dg/lto/pr88046_0.C: Check for shared and fPIC.
From-SVN: r267980
Paolo Carlini [Wed, 16 Jan 2019 16:16:54 +0000 (16:16 +0000)]
decl.c (grokdeclarator): Use locations[ds_storage_class] in error messages about ill-formed uses of mutable.
/cp
2019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use locations[ds_storage_class] in
error messages about ill-formed uses of mutable.
/testsuite
2019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/other/pr33558.C: Test location too.
* g++.dg/other/pr33558-2.C: Likewise.
* g++.dg/parse/crash4.C: Likewise.
* g++.old-deja/g++.brendan/err-msg11.C: Likewise.
* g++.old-deja/g++.mike/p7635.C: Likewise.
* g++.old-deja/g++.other/decl6.C: Likewise.
From-SVN: r267978
Marek Polacek [Wed, 16 Jan 2019 15:58:34 +0000 (15:58 +0000)]
PR c++/78244 - narrowing conversion in template not detected.
* call.c (perform_implicit_conversion_flags): Set
IMPLICIT_CONV_EXPR_BRACED_INIT.
* cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
* pt.c (tsubst_copy_and_build): Use it.
* g++.dg/cpp0x/Wnarrowing13.C: New test.
* g++.dg/cpp0x/Wnarrowing14.C: New test.
From-SVN: r267976
Uros Bizjak [Wed, 16 Jan 2019 15:33:34 +0000 (16:33 +0100)]
alpha.c (alpha_gimplify_va_arg): Handle split indirect COMPLEX_TYPE arguments.
* config/alpha/alpha.c (alpha_gimplify_va_arg):
Handle split indirect COMPLEX_TYPE arguments.
From-SVN: r267973
Richard Earnshaw [Wed, 16 Jan 2019 15:22:08 +0000 (15:22 +0000)]
__builtin_<add/sub>_overflow issues on AArch64 (redux) (cont)
And the ChangeLog for PR target/86891 fix.
From-SVN: r267972
Richard Earnshaw [Wed, 16 Jan 2019 15:18:05 +0000 (15:18 +0000)]
__builtin_<add/sub>_overflow issues on AArch64 (redux)
Further investigation showed that my previous patch for this issue was
still incomplete.
The problem stemmed from what I suspect was a mis-understanding of the
way overflow is calculated on aarch64 when values are subtracted (and
hence in comparisons). In this case, unlike addition, the carry flag
is /cleared/ if there is overflow (technically, underflow) and set
when that does not happen. This patch clears up this issue by using
CCmode for all subtractive operations (this can fully describe the
normal overflow conditions without anything particularly fancy);
clears up the way we express normal unsigned overflow using CC_Cmode
(the result of a sum is less than one of the operands) and adds a new
mode, CC_ADCmode to handle expressing overflow of an add-with-carry
operation, where the standard idiom is no-longer sufficient to
describe the overflow condition.
PR target/86891
* config/aarch64/aarch64-modes.def: Add comment about how the carry
bit is set by add and compare.
(CC_ADC): New CC_MODE.
* config/aarch64/aarch64.c (aarch64_select_cc_mode): Use variables
to cache the code and mode of X. Adjust the shape of a CC_Cmode
comparison. Add detection for CC_ADCmode.
(aarch64_get_condition_code_1): Update code support for CC_Cmode. Add
CC_ADCmode.
* config/aarch64/aarch64.md (uaddv<mode>4): Use LTU with CCmode.
(uaddvti4): Comparison result is in CC_ADCmode and the condition is GEU.
(add<mode>3_compareC_cconly_imm): Delete. Merge into...
(add<mode>3_compareC_cconly): ... this. Restructure the comparison
to eliminate the need for zero-extending the operands.
(add<mode>3_compareC_imm): Delete. Merge into ...
(add<mode>3_compareC): ... this. Restructure the comparison to
eliminate the need for zero-extending the operands.
(add<mode>3_carryin): Use LTU for the overflow detection.
(add<mode>3_carryinC): Use CC_ADCmode for the result of the carry out.
Reexpress comparison for overflow.
(add<mode>3_carryinC_zero): Update for change to add<mode>3_carryinC.
(add<mode>3_carryinC): Likewise.
(add<mode>3_carryinV): Use LTU for carry between partials.
* config/aarch64/predicates.md (aarch64_carry_operation): Update
handling of CC_Cmode and add CC_ADCmode.
(aarch64_borrow_operation): Likewise.
From-SVN: r267971
Jakub Jelinek [Wed, 16 Jan 2019 14:18:47 +0000 (15:18 +0100)]
re PR c/51628 (__attribute__((packed)) is unsafe in some cases (i.e. add -Waddress-of-packed-member, etc.))
PR c/51628
PR target/88682
* c-c++-common/pr51628-10.c (unaligned_int128_t): Add
may_alias attribute.
From-SVN: r267970
Tamar Christina [Wed, 16 Jan 2019 11:25:10 +0000 (11:25 +0000)]
Fix Arm big-endian regressions.
gcc/ChangeLog:
* config/arm/arm-protos.h (neon_vcmla_lane_prepare_operands): Remove patternmode.
* config/arm/arm.c (neon_vcmla_lane_prepare_operands): Likewise.
* config/arm/neon.md (neon_vcmla_lane<rot><mode>, neon_vcmla_laneq<rot><mode>,
neon_vcmlaq_lane<rot><mode>): Remove endianness conversion.
From-SVN: r267969
Martin Liska [Wed, 16 Jan 2019 09:38:21 +0000 (10:38 +0100)]
Extend locations where to seach for Fortran pre-include.
2019-01-16 Martin Liska <mliska@suse.cz>
* Makefile.in: Set TOOL_INCLUDE_DIR and NATIVE_SYSTEM_HEADER_DIR
for GCC driver.
* config/gnu-user.h (TARGET_F951_OPTIONS): Add 'finclude%s/' as
a new argument.
* gcc.c (add_sysrooted_hdrs_prefix): New function.
(path_prefix_reset): Move up in the source file.
(find_fortran_preinclude_file): Make complex search for the
fortran header files.
From-SVN: r267967
Kewen Lin [Wed, 16 Jan 2019 08:23:05 +0000 (08:23 +0000)]
Add self to maintainers list.
2019-01-16 Kewen Lin <linkw@gcc.gnu.org>
* MAINTAINERS (Write After Approval): Add myself.
From-SVN: r267965
Ulrich Drepper [Wed, 16 Jan 2019 08:01:22 +0000 (08:01 +0000)]
PR libstdc++/88738 treat shared_ptr and unique_ptr more like plain old pointers
PR libstdc++/88738
Warn about unused comparisons of shared_ptr/unique_ptr
* include/bits/c++config [_GLIBCXX_NODISCARD]: Define.
* include/bits/shared_ptr.h: Use it for operator ==, !=,
<, <=, >, >= for shared_ptr.
* include/bits/unique_ptr.h: Likewise for unique_ptr.
From-SVN: r267964
Tom de Vries [Wed, 16 Jan 2019 07:46:56 +0000 (07:46 +0000)]
[libbacktrace] Unify function name preference handling
Both read_function_entry and read_referenced_name implement a priority scheme
for names. The priorities are:
- 1st: DW_AT_linkage_name
- 2nd: Name from DW_AT_abstract_origin or DW_AT_specification
- 3rd: DW_AT_name.
Ensure both functions fully adhere to it.
2019-01-16 Tom de Vries <tdevries@suse.de>
* dwarf.c (read_referenced_name): Don't allow DW_AT_name to override any
name.
(read_function_entry): Same. Don't allow name found via
DW_AT_abstract_origin or case DW_AT_specification to override linkage
name.
From-SVN: r267963
Xiong Hu Luo [Wed, 16 Jan 2019 07:41:23 +0000 (07:41 +0000)]
Add myself
From-SVN: r267962
GCC Administrator [Wed, 16 Jan 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267961
Nikhil Benesch [Tue, 15 Jan 2019 23:54:37 +0000 (23:54 +0000)]
godump.c (go_output_typedef): When outputting a typedef...
gcc/:
* godump.c (go_output_typedef): When outputting a typedef, refer
to the underlying type by its name and not its structure.
gcc/testsuite:
* gcc.misc-tests/godump-1.c: Add test case for typedef before
struct.
From-SVN: r267958
David Malcolm [Tue, 15 Jan 2019 23:29:15 +0000 (23:29 +0000)]
Fix ICE on class-template argument deduction (PR c++/88795)
PR c++/88795 reports an ICE building a function_type for a deduction guide
when the substitution into the function signature fails, due to an
error_mark_node being returned from tsubst_arg_types but not being checked
for. This error_mark_node gets used as the TYPE_ARG_TYPES, leading to
ICEs in various places that assume this is a TREE_LIST.
This patch checks the result of tsubst_arg_types and propagates the failure
if it returns error_mark_node. It also adds an assertion to
build_function_type, to fail faster if passed in error_mark_node.
gcc/cp/ChangeLog:
PR c++/88795
* pt.c (build_deduction_guide): Bail out if tsubst_arg_types
fails.
gcc/testsuite/ChangeLog:
PR c++/88795
* g++.dg/template/pr88795.C: New test.
gcc/ChangeLog:
PR c++/88795
* tree.c (build_function_type): Assert that arg_types is not
error_mark_node.
From-SVN: r267957
Ian Lance Taylor [Tue, 15 Jan 2019 23:21:24 +0000 (23:21 +0000)]
runtime: add padding to FFI type of struct ending with zero-sized field
CL 157557 changes the compiler to add one byte padding to
non-empty struct ending with a zero-sized field. Add the same
padding to the FFI type, so reflect.Call works.
This fixes test/fixedbugs/issue26335.go in the main repo.
Reviewed-on: https://go-review.googlesource.com/c/158018
From-SVN: r267956
Iain Buclaw [Tue, 15 Jan 2019 23:02:43 +0000 (23:02 +0000)]
[D] Move building of typeof(null) values to a common function.
gcc/d/ChangeLog:
* d-codegen.cc (build_typeof_null_value): New function.
* d-tree.h (build_typeof_null_value): Declare.
* d-convert.cc (convert_expr): Use build_typeof_null_value.
* expr.cc (ExprVisitor::visit(NullExp)): Likewise.
From-SVN: r267955
Thomas Koenig [Tue, 15 Jan 2019 22:20:26 +0000 (22:20 +0000)]
re PR fortran/43136 (Excess copy-in/copy-out with character argument)
2019-01-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/43136
* resolve.c (resolve_array_ref): Add equal_length argument; set it
if the length of the substring equals that of the orignal
variable.
(resolve_ref): Remove the substring if it is equal in length to
the original variable, unless it is an EXPR_SUBSTRING).
2019-01-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/43136
* gfortran.dg/actual_array_substr_3.f90: New test.
From-SVN: r267954
Thomas Koenig [Tue, 15 Jan 2019 22:18:55 +0000 (22:18 +0000)]
re PR fortran/43072 (unneeded temporary (s=s+f(a)))
2019-01-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/43072
* resolve.c (resolve_array_ref): Add equal_length argument; set it
if the length of the substring equals that of the orignal
variable.
(resolve_ref): Remove the substring if it is equal in length to
the original variable, unless it is an EXPR_SUBSTRING).
2019-01-15 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/43072
* gfortran.dg/actual_array_substr_3.f90: New test.
From-SVN: r267953
Ian Lance Taylor [Tue, 15 Jan 2019 20:32:39 +0000 (20:32 +0000)]
compiler, runtime: panic on uncomparable map key, even if map is empty
This ports https://golang.org/cl/155918 from the master repo.
runtime: panic on uncomparable map key, even if map is empty
Reorg map flags a bit so we don't need any extra space for the extra flag.
This is a pre-req for updating libgo to the Go 1.12beta2 release.
Reviewed-on: https://go-review.googlesource.com/c/157858
From-SVN: r267950
Steven G. Kargl [Tue, 15 Jan 2019 20:17:35 +0000 (20:17 +0000)]
re PR fortran/81849 (Size of automatic array argument specified by host-associated variable.)
2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/81849
* resolve.c (resolve_symbol): Host associated varaibles can appear
in the specification statement of a RESULT array.
2019-01-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/81849
* gfortran.dg/pr81849.f90: New test.
From-SVN: r267948
Paul Thomas [Tue, 15 Jan 2019 19:52:08 +0000 (19:52 +0000)]
trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Deal with exprs that are indirect references; ie.
2019-01-15 Paul Thomas <pault@gcc.gnu.org>
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Deal with exprs
that are indirect references; ie. dummy arguments.
2019-01-15 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/ISO_Fortran_binding_2.c : Change reference to
ISO_Fortran_binding_2.h.
From-SVN: r267946
Marek Polacek [Tue, 15 Jan 2019 18:35:01 +0000 (18:35 +0000)]
re PR c++/88866 (g++.dg/cpp0x/variadic126.C fails with -std=c++2a)
PR c++/88866
* g++.dg/cpp0x/variadic126.C: Tweak dg-error.
From-SVN: r267944
Jason Merrill [Tue, 15 Jan 2019 18:26:00 +0000 (13:26 -0500)]
* g++.dg/ext/utf-cvt-char8_t.C: Pass -fsigned-char.
From-SVN: r267942
Richard Sandiford [Tue, 15 Jan 2019 16:46:54 +0000 (16:46 +0000)]
PR inline-asm/52813 revisited
The original patch for this PR made it an error to list the stack
pointer in the clobber list of an inline asm. However, the general
feeling seemed to be that going straight to a hard error was too harsh,
since there's quite a bit of existing code that has the clobber.
This patch implements the compromise discussed on IRC of making it
a -Wdeprecated warning instead.
2019-01-15 Richard Sandiford <richard.sandiford@arm.com>
gcc/
PR inline-asm/52813
* doc/extend.texi: Document that listing the stack pointer in the
clobber list of an asm is a deprecated feature.
* common.opt (Wdeprecated): Moved from c-family/c.opt.
* cfgexpand.c (asm_clobber_reg_is_valid): Issue a -Wdeprecated
warning instead of an error for clobbers of the stack pointer.
Add a note explaining why.
gcc/c-family/
PR inline-asm/52813
* c.opt (Wdeprecated): Move documentation and variable to common.opt.
gcc/d/
PR inline-asm/52813
* lang.opt (Wdeprecated): Reference common.opt instead of c.opt.
gcc/testsuite/
PR inline-asm/52813
* gcc.target/i386/pr52813.c (test1): Turn the diagnostic into a
-Wdeprecated warning and expect a following note:.
From-SVN: r267941
Richard Biener [Tue, 15 Jan 2019 16:06:42 +0000 (16:06 +0000)]
re PR debug/88046 (ICE in add_data_member_location_attribute at gcc/dwarf2out.c:19237 since r261885)
2019-01-15 Richard Biener <rguenther@suse.de>
PR debug/88046
* dwarf2out.c (gen_member_die): Do not generate inheritance
DIEs late.
* g++.dg/lto/pr88046_0.C: New testcase.
From-SVN: r267940
Richard Biener [Tue, 15 Jan 2019 15:37:29 +0000 (15:37 +0000)]
re PR tree-optimization/88855 (ICE: verify_ssa failed (error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set))
2019-01-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/88855
* tree-if-conv.c (combine_blocks): Collect
SSA_NAME_OCCURS_IN_ABNORMAL_PHI from propagated out virtuals.
* gcc.dg/pr88855.c: New testcase.
From-SVN: r267939
Jonathan Wakely [Tue, 15 Jan 2019 13:13:11 +0000 (13:13 +0000)]
Update value of __cpp_lib_shared_ptr_arrays macro
* include/bits/shared_ptr_base.h (__cpp_lib_shared_ptr_arrays): Define
as 201611L, because P0497R0 changes are supported.
* include/std/version (__cpp_lib_shared_ptr_arrays): Likewise.
From-SVN: r267938
Jonathan Wakely [Tue, 15 Jan 2019 12:58:19 +0000 (12:58 +0000)]
Fix more missing or incorrect feature test macros
* include/bits/erase_if.h [__cplusplus > 201703L]
(__cpp_lib_erase_if): Only define for C++2a.
* include/std/iterator [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
(__cpp_lib_null_iterators): Define.
* include/std/version [__cplusplus >= 201402L && !_GLIBCXX_DEBUG]
(__cpp_lib_null_iterators): Define.
[__cpp_impl_destroying_delete] (__cpp_lib_destroying_delete): Define.
From-SVN: r267937
Jonathan Wakely [Tue, 15 Jan 2019 12:01:12 +0000 (12:01 +0000)]
Fix missing or incorrect feature test macros
* doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2
status.
* include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms):
Define.
* include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3
changes are supported.
* include/std/optional (__cpp_lib_optional): Likewise.
* include/std/variant (__cpp_lib_variant): Likewise.
* include/std/version [!__STRICT_ANSI__]
(__cpp_lib_uncaught_exceptions): Define as long integer.
[__cplusplus >= 201703L] (__cpp_lib_any)
(__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions)
(__cpp_lib_variant): Define for C++17.
[__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define
as long integer.
* libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long
integer.
From-SVN: r267936
Jonathan Wakely [Tue, 15 Jan 2019 10:34:18 +0000 (10:34 +0000)]
* doc/xml/manual/status_cxx2020.xml: Update P1123R0 status.
From-SVN: r267935
Tom de Vries [Tue, 15 Jan 2019 10:11:16 +0000 (10:11 +0000)]
[nvptx] Handle assignment to gang-level reduction variable
2019-01-15 Tom de Vries <tdevries@suse.de>
PR target/80547
* config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Handle
lhs == NULL_TREE for gang-level reduction.
* testsuite/libgomp.oacc-c-c++-common/gang-reduction-var-assignment.c:
New test.
From-SVN: r267934
Richard Biener [Tue, 15 Jan 2019 09:37:22 +0000 (09:37 +0000)]
re PR ipa/88788 (Infinite loop in malloc_candidate_p_1 since r264838)
2019-01-15 Richard Biener <rguenther@suse.de>
Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
PR ipa/88788
* ipa-pure-const.c (malloc_candidate_p_1): Add parameter visited and
return true if SSA_NAME is already marked in visited bitmap.
(malloc_candidate_p): Pass visited to malloc_candidate_p_1.
Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
From-SVN: r267933
Paolo Carlini [Tue, 15 Jan 2019 09:36:43 +0000 (09:36 +0000)]
decl.c (start_decl): Improve error location.
/cp
2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (start_decl): Improve error location.
* decl2.c (grokfield): Likewise.
/testsuite
2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/typedef-initialized.C: New.
/cp
2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Move further up the location_t loc
declaration and use the location when building a TYPE_DECL for
a typedef name.
* decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
about an ill-formed bit-field as typedef.
/testsuite
2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/diagnostic/bitfld3.C: New.
From-SVN: r267932
Jakub Jelinek [Tue, 15 Jan 2019 08:11:00 +0000 (09:11 +0100)]
re PR tree-optimization/88775 (Optimize std::string assignment)
PR tree-optimization/88775
* match.pd (cmp (convert1?@2 addr@0) (convert2? addr@1)): Optimize
equal == 0 equality pointer comparisons some more if compared in
integral types and either one points to an automatic var and the
other to a global, or we can prove at least one points to the middle
or both point to start or both point to end.
* gcc.dg/tree-ssa/pr88775-1.c: New test.
* gcc.dg/tree-ssa/pr88775-2.c: New test.
From-SVN: r267931
Andi Kleen [Tue, 15 Jan 2019 03:49:45 +0000 (03:49 +0000)]
Lower sampling rate for autofdo bootstrap
autofdo create_gcov uses a lot of memory for large sample files.
Since gcc runs quite long the sample files generated during
the bootstrap are fairly ig.
Currently I can't even build make autoprofiledbootstrap on my system at
home because create_gcov needs more than 12GB and runs out of memory.
This should probably be fixed in create_gcov, but for now
lowering the sampling rate works well enough for me. The bootstrap
run is long enough that it gets good enough data in any case.
gcc/:
2019-01-14 Andi Kleen <ak@linux.intel.com>
* Makefile.in: Lower autofdo sampling rate by 10x.
* Makefile.tpl: Dito.
From-SVN: r267930
GCC Administrator [Tue, 15 Jan 2019 00:16:22 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r267929
Marek Polacek [Mon, 14 Jan 2019 22:01:24 +0000 (22:01 +0000)]
PR c++/88825 - ICE with bogus function return type deduction.
* typeck.c (can_do_nrvo_p): Check error_mark_node.
* g++.dg/cpp1y/auto-fn55.C: New test.
From-SVN: r267926
Jakub Jelinek [Mon, 14 Jan 2019 20:12:11 +0000 (21:12 +0100)]
c-cppbuiltin.c (c_cpp_builtin): Define __cpp_guaranteed_copy_elision and __cpp_nontype_template_parameter_auto.
* c-cppbuiltin.c (c_cpp_builtin): Define __cpp_guaranteed_copy_elision
and __cpp_nontype_template_parameter_auto. Add a comment that
__cpp_template_auto is deprecated.
* g++.dg/cpp1z/feat-cxx1z.C: Add tests for
__cpp_guaranteed_copy_elision and __cpp_nontype_template_parameter_auto
feature test macros.
* g++.dg/cpp2a/feat-cxx2a.C: Likewise.
From-SVN: r267925
Marek Polacek [Mon, 14 Jan 2019 20:09:10 +0000 (20:09 +0000)]
PR c++/88830 - ICE with abstract class.
* decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
Fix formatting.
* g++.dg/other/abstract7.C: New test.
From-SVN: r267924
Tom Honermann [Mon, 14 Jan 2019 19:55:51 +0000 (19:55 +0000)]
Implement P0482R5, char8_t: A type for UTF-8 characters and strings
gcc/cp/
* cvt.c (type_promotes_to): Handle char8_t promotion.
* decl.c (grokdeclarator): Handle invalid type specifier
combinations involving char8_t.
* lex.c (init_reswords): Add char8_t as a reserved word.
* mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
* parser.c (cp_keyword_starts_decl_specifier_p)
(cp_parser_simple_type_specifier): Recognize char8_t as a simple
type specifier.
(cp_parser_string_literal): Use char8_array_type_node for the type
of CPP_UTF8STRING.
(cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
headers.
* rtti.c (emit_support_tinfos): type_info support for char8_t.
* tree.c (char_type_p): Recognize char8_t as a character type.
* typeck.c (string_conv_p): Handle conversions of u8 string
literals of char8_t type.
(check_literal_operator_args): Handle UDLs with u8 string literals
of char8_t type.
* typeck2.c (ordinary_char_type_p): New.
(digest_init_r): Disallow initializing a char array with a u8 string
literal.
gcc/c-family/
* c-common.c (c_common_reswords): Add char8_t.
(fix_string_type): Use char8_t for the type of u8 string literals.
(c_common_get_alias_set): char8_t doesn't alias.
(c_common_nodes_and_builtins): Define char8_t as a builtin type in
C++.
(c_stddef_cpp_builtins): Add __CHAR8_TYPE__.
(keyword_begins_type_specifier): Add RID_CHAR8.
* c-common.h (rid): Add RID_CHAR8.
(c_tree_index): Add CTI_CHAR8_TYPE and CTI_CHAR8_ARRAY_TYPE.
Define D_CXX_CHAR8_T and D_CXX_CHAR8_T_FLAGS.
Define char8_type_node and char8_array_type_node.
* c-cppbuiltin.c (cpp_atomic_builtins): Predefine
__GCC_ATOMIC_CHAR8_T_LOCK_FREE.
(c_cpp_builtins): Predefine __cpp_char8_t.
* c-lex.c (lex_string): Use char8_array_type_node as the type of
CPP_UTF8STRING.
(lex_charconst): Use char8_type_node as the type of CPP_UTF8CHAR.
* c-opts.c: If not otherwise specified, enable -fchar8_t when
targeting C++2a.
* c.opt: Add the -fchar8_t command line option.
libiberty/
* cp-demangle.c (cplus_demangle_builtin_types)
(cplus_demangle_type): Add name demangling for char8_t (Du).
* cp-demangle.h: Increase D_BUILTIN_TYPE_COUNT to accommodate the
new char8_t type.
From-SVN: r267923
Martin Sebor [Mon, 14 Jan 2019 18:44:00 +0000 (18:44 +0000)]
PR target/88638 - FAIL: fsf-nsstring-format-1.s on darwin
gcc/c-family/ChangeLog:
PR target/88638
* c-attribs.c (positional_argument): Call valid_format_string_type_p
and issue errors if it fails.
* c-common.h (valid_format_string_type_p): Declare.
* c-format.c (valid_stringptr_type_p): Rename...
(valid_format_string_type_p): ...to this and make extern.
(handle_format_arg_attribute): Adjust to new name.
(check_format_string): Same.
gcc/testsuite/ChangeLog:
PR target/88638
* gcc.dg/format/attr-8.c: New test.
* gcc.dg/darwin-cfstring-format-1.c: Adjust diagnostics.
* gcc.dg/format/attr-3.c: Same.
* obj-c++.dg/fsf-nsstring-format-1.mm: Same.
* objc.dg/fsf-nsstring-format-1.m: Same.
gcc/ChangeLog:
PR target/88638
* doc/extend.texi (Darwin Format Checks): Clarify.
From-SVN: r267922
Martin Liska [Mon, 14 Jan 2019 18:40:34 +0000 (19:40 +0100)]
Fix location of tls_wrapper_fn (PR gcov-profile/88263).
2019-01-14 Martin Liska <mliska@suse.cz>
PR gcov-profile/88263
* decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
as location of the TLS wrapper.
2019-01-14 Martin Liska <mliska@suse.cz>
PR gcov-profile/88263
* g++.dg/gcov/pr88263-2.C: New test.
From-SVN: r267921
Martin Sebor [Mon, 14 Jan 2019 18:26:32 +0000 (11:26 -0700)]
invoke.texi (-Wmemset-transposed-args): Fix typos, adjust wording.
gcc/ChangeLog:
* invoke.texi (-Wmemset-transposed-args): Fix typos, adjust wording.
From-SVN: r267920