Jonathan Wakely [Wed, 29 May 2019 22:00:53 +0000 (23:00 +0100)]
PR libstdc++/88881 fix filesystem::symlink_status for Windows
The fix for PR 88881 only added a workaround to filesystem::status, but
filesystem::symlink_status is also affected by the _wstat bug and needs
the same workaround.
The recent change to optimize path::parent_path() means that the
workaround can be simplified to just use parent_path().
PR libstdc++/88881
* src/c++17/fs_ops.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
(status(const path&, error_code&)): Use parent_path() to remove
trailing slash.
(symlink_status(const path&, error_code&)): Duplicate workaround for
bug in _wstat for paths with trailing slash.
* testsuite/27_io/filesystem/operations/remove_all.cc: Check path
with trailing slash.
* testsuite/27_io/filesystem/operations/status.cc: Likewise.
* testsuite/27_io/filesystem/operations/symlink_status.cc: Likewise.
From-SVN: r271755
Jonathan Wakely [Wed, 29 May 2019 22:00:45 +0000 (23:00 +0100)]
Optimize filesystem::path::parent_path()
Parsing a complete string is more efficient than appending each
component one-by-one.
* src/c++17/fs_path.cc (path::parent_path()): Create whole path at
once instead of building it iteratively.
From-SVN: r271754
Bill Schmidt [Wed, 29 May 2019 21:50:09 +0000 (21:50 +0000)]
rs6000.c (rs6000_call_template_1): Handle pcrel calls here...
[gcc]
2019-05-29 Bill Schmidt <wschmidt@linux.ibm.com>
Alan Modra <amodra@gmail.com>
* config/rs6000/rs6000.c (rs6000_call_template_1): Handle pcrel
calls here...
(rs6000_indirect_call_template_1): ...and here.
(rs6000_pltseq_template): Handle plt_pcrel34. Rework tocsave,
plt16_ha, plt16_lo, mtctr indirect calls. Use
rs6000_pltseq_enum.
(rs6000_decl_ok_for_sibcall): New function.
(rs6000_function_ok_for_sibcall): Refactor.
(rs6000_longcall_ref): Use UNSPEC_PLT_PCREL when pcrel.
(rs6000_call_aix): Don't emit toc restore rtl for indirect calls
when pcrel. Reorganize.
(rs6000_sibcall_aix): Don't add r2 to function usage when pcrel.
* rs6000.h (rs6000_pltseq_enum): New enum.
* rs6000.md (UNSPEC_PLT_PCREL): New unspec.
(*pltseq_tocsave): Use rs6000_pltseq_enum.
(*pltseq_plt16_ha): Likewise.
(*pltseq_plt16_lo): Likewise.
(*pltseq_mtctr): Likewise.
(*pltseq_plt_pcrel): New insn.
(*call_local_aix): Handle @notoc calls.
(*call_value_local_aix): Likewise.
(*call_nonlocal_aix): Adjust lengths for pcrel calls.
(*call_value_nonlocal_aix): Likewise.
(*call_indirect_pcrel): New insn.
(*call_value_indirect_pcrel): Likewise.
[gcc/testsuite]
2019-05-29 Bill Schmidt <wschmidt@linux.ibm.com>
* gcc.target/powerpc/notoc-direct-1.c: New.
* gcc.target/powerpc/pcrel-sibcall-1.c: New.
Co-Authored-By: Alan Modra <amodra@gmail.com>
From-SVN: r271753
Jakub Jelinek [Wed, 29 May 2019 21:33:18 +0000 (23:33 +0200)]
re PR c++/90598 (Return type of explicit destructor call wrong)
PR c++/90598
* tree.c (lvalue_kind): Return clk_none for expressions with
with VOID_TYPE_P.
* g++.dg/cpp0x/pr90598.C: New test.
From-SVN: r271752
Thomas Koenig [Wed, 29 May 2019 20:30:45 +0000 (20:30 +0000)]
re PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native starting with r271377)
2019-05-29 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90539
* gfortran.h (gfc_has_dimen_vector_ref): Add prototype.
* trans.h (gfc_conv_subref_array_arg): Add argument check_contiguous.
(gfc_conv_is_contiguous_expr): Add prototype.
* frontend-passes.c (has_dimen_vector_ref): Remove prototype,
rename to
(gfc_has_dimen_vector_ref): New function name.
(matmul_temp_args): Use gfc_has_dimen_vector_ref.
(inline_matmul_assign): Likewise.
* trans-array.c (gfc_conv_array_parameter): Also check for absence
of a vector subscript before calling gfc_conv_subref_array_arg.
Pass additional argument to gfc_conv_subref_array_arg.
* trans-expr.c (gfc_conv_subref_array_arg): Add argument
check_contiguous. If that is true, check if the argument
is contiguous and do not repack in that case.
* trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): Split
away most of the work into, and call
(gfc_conv_intrinsic_is_coniguous_expr): New function.
2019-05-29 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90539
* gfortran.dg/internal_pack_21.f90: Adjust scan patterns.
* gfortran.dg/internal_pack_22.f90: New test.
* gfortran.dg/internal_pack_23.f90: New test.
From-SVN: r271751
Jan Hubicka [Wed, 29 May 2019 19:51:24 +0000 (21:51 +0200)]
* tree-ssa/alias-access-spath-1.c: new testcase.
From-SVN: r271750
Uros Bizjak [Wed, 29 May 2019 18:51:41 +0000 (20:51 +0200)]
sse.md (*save_multiple<mode>): Rename from save_multiple<mode>.
* config/i386/sse.md (*save_multiple<mode>): Rename from
save_multiple<mode>.
(*restore_multiple<mode>): Rename from restore_multiple<mode>.
(*restore_multiple_and_return<mode>): Rename from
restore_multiple_and_return<mode>.
(*restore_multiple_leave_return<mode>): Rename from
restore_multiple_leave_return<mode>.
From-SVN: r271749
Yoshinori Sato [Wed, 29 May 2019 18:36:06 +0000 (03:36 +0900)]
config.gcc (rx-*-linux*): New target.
* config.gcc (rx-*-linux*): New target.
* config/rx/elf.opt: New file.
* config/rx/linux.h: Likewise.
* config/rx/t-linux: Likewise.
* config/rx/rx.c (TARGET_SAVE_ACC_REGISTER): If not defined,
make it zero.
* config/rx/rx.h (ASM_APP_ON): Allow to be overridden.
(ASM_APP_OFF): Likewise.
* config/rx/rx.opt: Drop -msim and -mas100-syntax, they were
moved elsewhere.
* config.host (rx-*-linux*): Add new case.
* config/rx/t-rx (HOST_LIBGCC2_CFLAGS): Force DFmode to SFmode.
From-SVN: r271748
Jan Hubicka [Wed, 29 May 2019 18:13:51 +0000 (20:13 +0200)]
tree-ssa-alias.c (same_type_for_tbaa): Return ture if main variants are pointer equivalent.
* tree-ssa-alias.c (same_type_for_tbaa): Return ture if main
variants are pointer equivalent.
From-SVN: r271747
Paolo Carlini [Wed, 29 May 2019 17:30:36 +0000 (17:30 +0000)]
re PR c++/89875 (invalid typeof reference to a member of an incomplete struct accepted at function scope)
/cp
2019-05-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89875
* parser.c (cp_parser_sizeof_operand): When the type-id production
did not work out commit to the tentative parse.
/testsuite
2019-05-29 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/89875
* g++.dg/cpp0x/decltype-pr66548.C: Remove xfail.
* g++.dg/template/sizeof-template-argument.C: Adjust expected error.
From-SVN: r271746
Jonathan Wakely [Wed, 29 May 2019 14:45:50 +0000 (15:45 +0100)]
Avoid -Wunused-parameter warnings from testsuite utility
* testsuite/util/testsuite_api.h: Remove names of unused parameters.
From-SVN: r271741
Jonathan Wakely [Wed, 29 May 2019 14:45:35 +0000 (15:45 +0100)]
PR libstdc++/85494 use rdseed and rand_s in std::random_device
Add support for additional sources of randomness to std::random_device,
to allow using RDSEED for Intel CPUs and rand_s for Windows. When
supported these can be selected using the tokens "rdseed" and "rand_s".
For *-w64-mingw32 targets the "default" token will now use rand_s, and
for other i?86-*-* and x86_64-*-* targets it will try to use "rdseed"
first, then "rdrand", and finally "/dev/urandom".
To simplify the declaration of std::random_device in <bits/random.h> the
constructors now unconditionally call _M_init instead of _M_init_pretr1,
and the function call operator now unconditionally calls _M_getval. The
library code now decides whether _M_init and _M_getval should use a real
source of randomness or the mt19937 engine.
Existing code compiled against old libstdc++ headers will still call
_M_init_pretr1 and _M_getval_pretr1, but those functions now forward to
_M_init and _M_getval if a real source of randomness is available. This
means existing code compiled for mingw-w64 will start to use rand_s just
by linking to a new libstdc++.dll.
* acinclude.m4 (GLIBCXX_CHECK_X86_RDSEED): Define macro to check if
the assembler supports rdseed.
* config.h.in: Regenerate.
* configure: Regenerate.
* configure.ac: Use GLIBCXX_CHECK_X86_RDSEED.
* config/os/mingw32-w64/os_defines.h (_GLIBCXX_USE_CRT_RAND_S): Define.
* doc/html/*: Regenerate.
* doc/xml/manual/status_cxx2011.xml: Document new tokens.
* include/bits/random.h (random_device::random_device()): Always call
_M_init rather than _M_init_pretr1.
(random_device::random_device(const string&)): Likewise.
(random_device::operator()()): Always call _M_getval().
(random_device::_M_file): Replace first member of union with an
anonymous struct, with _M_file as its first member.
* src/c++11/random.cc [_GLIBCXX_X86_RDRAND] (USE_RDRAND): Define.
[_GLIBCXX_X86_RDSEED] (USE_RDSEED): Define.
(USE_MT19937): Define if none of the above are defined.
(USE_POSIX_FILE_IO): Define.
(_M_strtoul): Remove.
[USE_RDSEED] (__x86_rdseed): Define new function.
[_GLIBCXX_USE_CRT_RAND_S] (__winxp_rand_s): Define new function.
(random_device::_M_init(const string&)): Initialize new union members.
Add support for "rdseed" and "rand_s" tokens. Decide what the
"default" token does according to which USE_* macros are defined.
[USE_POSIX_FILE_IO]: Store a file descriptor.
[USE_MT19937]: Forward to _M_init_pretr1 instead.
(random_device::_M_init_pretr1(const string&)) [USE_MT19937]: Inline
code from _M_strtoul.
[!USE_MT19937]: Call _M_init, transforming the old default token or
numeric tokens to "default".
(random_device::_M_fini()) [USE_POSIX_FILE_IO]: Use close not fclose.
(random_device::_M_getval()): Use new union members to obtain a
random number from the stored function pointer or file descriptor.
[USE_MT19937]: Obtain a value from the mt19937 engine.
(random_device::_M_getval_pretr1()): Call _M_getval().
(random_device::_M_getentropy()) [USE_POSIX_FILE_IO]: Use _M_fd
instead of fileno.
[!USE_MT19937] (mersenne_twister): Do not instantiate when not needed.
* testsuite/26_numerics/random/random_device/85494.cc: New test.
From-SVN: r271740
Alejandro Martinez [Wed, 29 May 2019 14:12:02 +0000 (14:12 +0000)]
This patch implements the [u]avgM3_floor and [u]avgM3_ceil optabs for SVE2.
From-SVN: r271739
Jakub Jelinek [Wed, 29 May 2019 14:08:57 +0000 (16:08 +0200)]
re PR fortran/90329 (Incompatibility between gfortran and C lapack calls)
PR fortran/90329
* lang.opt (fbroken-callers): Remove.
(ftail-call-workaround, ftail-call-workaround=): New options.
* gfortran.h (struct gfc_namespace): Add implicit_interface_calls.
* interface.c (gfc_procedure_use): Set implicit_interface_calls
for calls to implicit interface procedures.
* trans-decl.c (create_function_arglist): Use flag_tail_call_workaround
instead of flag_broken_callers. If it is not 2, also require
sym->ns->implicit_interface_calls.
* invoke.texi (fbroken-callers): Remove documentation.
(ftail-call-workaround, ftail-call-workaround=): Document.
From-SVN: r271738
Jakub Jelinek [Wed, 29 May 2019 09:33:02 +0000 (11:33 +0200)]
re PR bootstrap/90543 (Build failure on MINGW for gcc-9.1.0)
PR bootstrap/90543
* optc-save-gen.awk: In cl_optimization_print, use correct condition
for var_opt_string printing. In cl_optimization_print_diff, print
(null) instead of invoking undefined behavior if one of the
var_opt_string pointers is NULL and use && instead of first || in the
guarding condition. For var_target_other options, handle const char *
target variables similarly to const char * optimize node variables.
From-SVN: r271736
Sam Tebbs [Wed, 29 May 2019 09:22:17 +0000 (09:22 +0000)]
[PATCH 3/3][GCC][AARCH64] Add support for pointer authentication B key
gcc/
2019-05-29 Sam Tebbs <sam.tebbs@arm.com>
* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add
AARCH64_PAUTH_BUILTIN_AUTIB1716 and AARCH64_PAUTH_BUILTIN_PACIB1716.
* config/aarch64/aarch64-builtins.c (aarch64_init_pauth_hint_builtins):
Add autib1716 and pacib1716 initialisation.
* config/aarch64/aarch64-builtins.c (aarch64_expand_builtin): Add checks
for autib1716 and pacib1716.
* config/aarch64/aarch64-protos.h (aarch64_key_type,
aarch64_post_cfi_startproc): Define.
* config/aarch64/aarch64-protos.h (aarch64_ra_sign_key): Define extern.
* config/aarch64/aarch64.c (aarch64_handle_standard_branch_protection,
aarch64_handle_pac_ret_protection): Set default sign key to A.
* config/aarch64/aarch64.c (aarch64_expand_epilogue,
aarch64_expand_prologue): Add check for b-key.
* config/aarch64/aarch64.c (aarch64_ra_sign_key,
aarch64_post_cfi_startproc, aarch64_handle_pac_ret_b_key): Define.
* config/aarch64/aarch64.h (TARGET_ASM_POST_CFI_STARTPROC): Define.
* config/aarch64/aarch64.c (aarch64_pac_ret_subtypes): Add "b-key".
* config/aarch64/aarch64.md (unspec): Add UNSPEC_AUTIA1716,
UNSPEC_AUTIB1716, UNSPEC_AUTIASP, UNSPEC_AUTIBSP, UNSPEC_PACIA1716,
UNSPEC_PACIB1716, UNSPEC_PACIASP, UNSPEC_PACIBSP.
* config/aarch64/aarch64.md (do_return): Add check for b-key.
* config/aarch64/aarch64.md (<pauth_mnem_prefix>sp): Replace
pauth_hint_num_a with pauth_hint_num.
* config/aarch64/aarch64.md (<pauth_mnem_prefix>1716): Replace
pauth_hint_num_a with pauth_hint_num.
* config/aarch64/aarch64.opt (msign-return-address=): Deprecate.
* config/aarch64/iterators.md (PAUTH_LR_SP): Add UNSPEC_AUTIASP,
UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
* config/aarch64/iterators.md (PAUTH_17_16): Add UNSPEC_AUTIA1716,
UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716.
* config/aarch64/iterators.md (pauth_mnem_prefix): Add UNSPEC_AUTIA1716,
UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716, UNSPEC_AUTIASP,
UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP.
* config/aarch64/iterators.md (pauth_hint_num_a): Replace
UNSPEC_PACI1716 and UNSPEC_AUTI1716 with UNSPEC_PACIA1716 and
UNSPEC_AUTIA1716 respectively.
* config/aarch64/iterators.md (pauth_hint_num_a): Rename to pauth_hint_num
and add UNSPEC_PACIBSP, UNSPEC_AUTIBSP, UNSPEC_PACIB1716, UNSPEC_AUTIB1716.
* doc/invoke.texi (-mbranch-protection): Add b-key type.
* config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Rename
UNSPEC_PACISP to UNSPEC_PACIASP and UNSPEC_PACIBSP.
gcc/testsuite
2019-05-29 Sam Tebbs <sam.tebbs@arm.com>
* gcc.target/aarch64/return_address_sign_b_1.c: New file.
* gcc.target/aarch64/return_address_sign_b_2.c: New file.
* gcc.target/aarch64/return_address_sign_b_3.c: New file.
* gcc.target/aarch64/return_address_sign_b_exception.c: New file.
* gcc.target/aarch64/return_address_sign_ab_exception.c: New file.
* gcc.target/aarch64/return_address_sign_builtin.c: New file
libgcc/
2019-05-29 Sam Tebbs <sam.tebbs@arm.com>
* config/aarch64/aarch64-unwind.h (aarch64_cie_signed_with_b_key): New
function.
* config/aarch64/aarch64-unwind.h (aarch64_post_extract_frame_addr,
aarch64_post_frob_eh_handler_addr): Add check for b-key.
* config/aarch64/aarch64-unwind-h (aarch64_post_extract_frame_addr,
aarch64_post_frob_eh_handler_addr, aarch64_post_frob_update_context):
Rename RA_A_SIGNED_BIT to RA_SIGNED_BIT.
* unwind-dw2-fde.c (get_cie_encoding): Add check for 'B' in augmentation
string.
* unwind-dw2.c (extract_cie_info): Add check for 'B' in augmentation
string.
(RA_A_SIGNED_BIT): Rename to RA_SIGNED_BIT.
From-SVN: r271735
Jakub Jelinek [Wed, 29 May 2019 07:51:43 +0000 (09:51 +0200)]
gimplify.c (struct gimplify_omp_ctx): Add clauses member.
* gimplify.c (struct gimplify_omp_ctx): Add clauses member.
(gimplify_scan_omp_clauses): Initialize ctx->clauses.
(gimplify_adjust_omp_clauses_1): Transform lastprivate conditional
explicit clause on combined parallel into implicit shared clause.
(gimplify_adjust_omp_clauses): Move lastprivate conditional clause
and firstprivate if the decl has one too from combined parallel to
the worksharing construct.
gcc/testsuite/
* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
sorry on lastprivate conditional on parallel for.
* c-c++-common/gomp/lastprivate-conditional-3.c (foo): Add tests for
lastprivate conditional warnings on parallel for constructs.
* c-c++-common/gomp/lastprivate-conditional-4.c: New test.
libgomp/
* testsuite/libgomp.c-c++-common/lastprivate_conditional_4.c: Rename
to ...
* testsuite/libgomp.c-c++-common/lastprivate-conditional-4.c: ... this.
* testsuite/libgomp.c-c++-common/lastprivate-conditional-5.c: New test.
* testsuite/libgomp.c-c++-common/lastprivate-conditional-6.c: New test.
From-SVN: r271733
Jakub Jelinek [Wed, 29 May 2019 07:48:37 +0000 (09:48 +0200)]
re PR c/90628 (__builtin_mul_overflow writes to const qualified integer)
PR c/90628
* c-common.c (check_builtin_function_arguments)
<case BUILTIN_*_OVERFLOW>: Diagnose pointer to const qualified integer
as last argument.
* c-c++-common/builtin-arith-overflow-3.c: New test.
From-SVN: r271732
Jakub Jelinek [Wed, 29 May 2019 07:45:49 +0000 (09:45 +0200)]
P1091R3 - Extending structured bindings to be more like var decls P1381R1 - Reference capture of structured bindings
P1091R3 - Extending structured bindings to be more like var decls
P1381R1 - Reference capture of structured bindings
* decl.c (cp_maybe_mangle_decomp): Handle TREE_STATIC decls even at
function scope.
(cp_finish_decomp): Copy over various decl properties from decl to
v[i] in the tuple case.
(grokdeclarator): Allow static, thread_local and __thread for C++2a
and use pedwarn instead of error for older standard revisions.
Make other structured binding diagnostic messages more i18n friendly.
* g++.dg/cpp1z/decomp3.C (test): For static, expect only warning
instead of error and only for c++17_down. Add a thread_local test.
(z2): Add a __thread test.
* g++.dg/cpp2a/decomp1.C: New test.
* g++.dg/cpp2a/decomp1-aux.cc: New file.
* g++.dg/cpp2a/decomp2.C: New test.
* g++.dg/cpp2a/decomp3.C: New test.
From-SVN: r271731
Jakub Jelinek [Wed, 29 May 2019 07:44:50 +0000 (09:44 +0200)]
P1091R3 - Extending structured bindings to be more like var decls P1381R1 - Reference capture of structured bindings
P1091R3 - Extending structured bindings to be more like var decls
P1381R1 - Reference capture of structured bindings
* decl.c (cp_maybe_mangle_decomp): Handle TREE_STATIC decls even at
function scope.
(cp_finish_decomp): Copy over various decl properties from decl to
v[i] in the tuple case.
(grokdeclarator): Allow static, thread_local and __thread for C++2a
and use pedwarn instead of error for older standard revisions.
Make other structured binding diagnostic messages more i18n friendly.
* g++.dg/cpp1z/decomp3.C (test): For static, expect only warning
instead of error and only for c++17_down. Add a thread_local test.
(z2): Add a __thread test.
* g++.dg/cpp2a/decomp1.C: New test.
* g++.dg/cpp2a/decomp1-aux.cc: New file.
* g++.dg/cpp2a/decomp2.C: New test.
* g++.dg/cpp2a/decomp3.C: New test.
From-SVN: r271730
Martin Liska [Wed, 29 May 2019 06:09:02 +0000 (08:09 +0200)]
Remove duplicite dg-compile (PR testsuite/90657).
2019-05-29 Martin Liska <mliska@suse.cz>
PR testsuite/90657
* gcc.dg/ipa/pr90555.c: Remove duplicite dg-compile.
From-SVN: r271729
Bill Schmidt [Wed, 29 May 2019 03:37:29 +0000 (03:37 +0000)]
rs6000-cpus.def (OTHER_FUTURES_MASK): New #define.
[gcc]
2019-05-28 Bill Schmidt <wschmidt@linux.ibm.com>
Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/rs6000-cpus.def (OTHER_FUTURES_MASK): New #define.
[gcc/testsuite]
2019-05-28 Bill Schmidt <wschmidt@linux.ibm.com>
* gcc.target/powerpc/localentry-detect-1.c: New file.
Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>
From-SVN: r271728
Michael Meissner [Wed, 29 May 2019 02:10:59 +0000 (02:10 +0000)]
rtl.h (LABEL_REF_P): New #define.
2019-05-28 Michael Meissner <meissner@linux.ibm.com>
* rtl.h (LABEL_REF_P): New #define.
From-SVN: r271727
GCC Administrator [Wed, 29 May 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271726
John David Anglin [Tue, 28 May 2019 23:24:23 +0000 (23:24 +0000)]
pa.c (hppa_profile_hook): Remove offset adjustment.
* config/pa/pa.c (hppa_profile_hook): Remove offset adjustment.
From-SVN: r271720
Jonathan Wakely [Tue, 28 May 2019 19:39:48 +0000 (20:39 +0100)]
PR libstdc++/90634 reduce allocations in filesystem::path construction
PR libstdc++/90634
* include/experimental/bits/fs_path.h (path::path(path&&)): Only call
_M_split_cmpts() for a path with multiple components.
(path::_S_is_dir_sep()): Add missing 'static' keyword to function.
* src/filesystem/path.cc (path::_M_split_cmpts()): Count number of
components and reserve space in vector. Return early when there is
only one component.
* testsuite/27_io/filesystem/path/construct/90634.cc: New test.
* testsuite/experimental/filesystem/path/construct/90634.cc: New test.
From-SVN: r271717
Jonathan Wakely [Tue, 28 May 2019 19:39:41 +0000 (20:39 +0100)]
Fix C++14-only code in testsuite utility
* testsuite/util/testsuite_fs.h (compare_paths): Use three-argument
form of std::equals for C++11 compatibility.
From-SVN: r271716
Rainer Orth [Tue, 28 May 2019 17:27:51 +0000 (17:27 +0000)]
Remove pre-Solaris 11/SPARC unwinding support
* config/sparc/sol2-unwind.h [__arch64__] (sparc64_is_sighandler):
Remove Solaris 9 and 10 support.
(sparc_is_sighandler): Likewise.
From-SVN: r271715
Nathan Sidwell [Tue, 28 May 2019 17:04:12 +0000 (17:04 +0000)]
[C++ PATCH] template specializations
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg01844.html
* decl.c (duplicate_decls): Assert a template newdecl has no
specializations.
From-SVN: r271713
Marek Polacek [Tue, 28 May 2019 14:00:29 +0000 (14:00 +0000)]
PR c++/90548 - ICE with generic lambda and empty pack.
* pt.c (tsubst_copy_and_build): Handle pack expansion properly.
* g++.dg/cpp1y/lambda-generic-90548.C: New test.
From-SVN: r271705
Alejandro Martinez [Tue, 28 May 2019 13:48:44 +0000 (13:48 +0000)]
Current vectoriser doesn't support masked loads for SLP.
Current vectoriser doesn't support masked loads for SLP. We should add that, to
allow things like:
void
f (int *restrict x, int *restrict y, int *restrict z, int n)
{
for (int i = 0; i < n; i += 2)
{
x[i] = y[i] ? z[i] : 1;
x[i + 1] = y[i + 1] ? z[i + 1] : 2;
}
}
to be vectorized using contiguous loads rather than LD2 and ST2.
This patch was motivated by SVE, but it is completely generic and should apply
to any architecture with masked loads.
From-SVN: r271704
Rainer Orth [Tue, 28 May 2019 13:37:15 +0000 (13:37 +0000)]
Remove obsolete comment about use_thunk
* config/alpha/alpha.c [TARGET_ABI_OSF] (alpha_output_mi_thunk_osf):
Remove obsolete use_thunk reference.
* config/i386/i386.c (x86_output_mi_thunk): Likewise.
* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
* config/nios2/nios2.c (nios2_asm_output_mi_thunk): Likewise.
* config/or1k/or1k.c (or1k_output_mi_thunk): Likewise.
* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
* config/sh/sh.c (sh_output_mi_thunk): Likewise.
* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
* config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
* config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
From-SVN: r271703
Nathan Sidwell [Tue, 28 May 2019 13:31:16 +0000 (13:31 +0000)]
[PATCH] Commonize anon-name generation
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg01699.html
* tree.h (IDENTIFIER_ANON_P): New.
(anon_aggrname_format, anon_aggname_p): Don't declare.
(make_anon_name): Declare.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Use IDENTIFIER_ANON_P.
(hash_tree): Likewise.
* tree-streamer-out.c (write_ts_decl_minimal_tree): Likewise.
* tree.c (anon_aggrname_p, anon_aggrname_format): Delete.
(anon_cnt, make_anon_name): New.
gcc/cp/
* cp-tree.h (make_anon_name): Drop declaration.
(TYPE_UNNAMED_P): Use IDENTIFIER_ANON_P.
* cp-lang.c (cxx_dwarf_name): Likewise.
* class.c (find_flexarrays): Likewise.
* decl.c (name_unnamed_type, xref_tag_1): Likewise.
* error.c (dump_aggr_type): Likewise.
* pt.c (push_template_decl_real): Likewise.
* name-lookup.c (consider_binding_level): Likewise.
(anon_cnt, make_anon_name): Delete.
gcc/d/
* types.cc (fixup_anonymous_offset): Use IDENTIFIER_ANON_P.
(layout_aggregate_members): Use make_anon_name.
From-SVN: r271702
Jeff Law [Tue, 28 May 2019 13:16:17 +0000 (07:16 -0600)]
pr50749-qihisi-predec-3.c: Disable loop distribution.
* testsuite/gcc.target/sh/pr50749-qihisi-predec-3.c: Disable
loop distribution.
From-SVN: r271701
Martin Liska [Tue, 28 May 2019 12:05:50 +0000 (14:05 +0200)]
Support again multiple --help options (PR other/90315).
2019-05-28 Martin Liska <mliska@suse.cz>
PR other/90315
* opts-global.c (decode_options): Print help for all
help_option_arguments.
* opts.c (print_help): Add new argument.
(common_handle_option): Remember all values into
help_option_arguments.
* opts.h (print_help): Add new argument.
From-SVN: r271700
Segher Boessenkool [Tue, 28 May 2019 11:45:48 +0000 (13:45 +0200)]
rs6000: Improve p9-dimode* testcases
This removes the unnecessary restriction to 32-bit (all three ways).
It also scans for mtvsr*, not just mtvsrd. Finally, it uses the "wa"
constraints instead of "wi" in the inline asm statements.
gcc/testsuite/
* gcc.target/powerpc/p9-dimode1.c: Don't restrict to -m64. Check for
all mtvsr*, not just mtvsrd. Use "wa" instead of "wi" constraints.
* gcc.target/powerpc/p9-dimode2.c: Ditto.
From-SVN: r271696
Martin Liska [Tue, 28 May 2019 11:42:46 +0000 (13:42 +0200)]
Handle loop fields in IPA ICF (PR ipa/90555).
2019-05-28 Martin Liska <mliska@suse.cz>
PR ipa/90555
* ipa-icf-gimple.c (func_checker::compare_loops): New function.
* ipa-icf-gimple.h (func_checker::compare_loops): Likewise.
(func_checker::compare_bb): Call compare_loops.
2019-05-28 Martin Liska <mliska@suse.cz>
PR ipa/90555
* gcc.dg/ipa/pr90555.c: New test.
From-SVN: r271695
Eric Botcazou [Tue, 28 May 2019 08:51:35 +0000 (08:51 +0000)]
* gcc-interface/utils.c (handle_stack_protect_attribute): Move around.
From-SVN: r271694
Eric Botcazou [Tue, 28 May 2019 08:47:33 +0000 (08:47 +0000)]
implementation_defined_pragmas.rst (Machine_Attribute): Document additional optional parameters.
* doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute):
Document additional optional parameters.
* sem_prag.adb (Analyze_Pragma) <Pragma_Machine_Attribute>: Accept
more than one optional parameter.
* gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize
the list of supported pragmas. Simplify the handling of parameters
and add support for more than one optional parameter.
* gcc-interface/utils.c (attr_cold_hot_exclusions): New constant.
(gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten,
used, cold, hot, target and target_clones.
(begin_subprog_body): Do not create the RTL for the subprogram here.
(handle_noicf_attribute): New static function.
(handle_noipa_attribute): Likewise.
(handle_flatten_attribute): Likewise.
(handle_used_attribute): Likewise.
(handle_cold_attribute): Likewise.
(handle_hot_attribute): Likewise.
(handle_target_attribute): Likewise.
(handle_target_clones_attribute): Likewise.
From-SVN: r271693
Eric Botcazou [Tue, 28 May 2019 08:25:32 +0000 (08:25 +0000)]
trans.c (lvalue_required_for_attribute_p): Return 0 for 'Size too.
* gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0
for 'Size too.
(Identifier_to_gnu): Use the actual subtype for a reference to a
packed array in a return statement.
(Attribute_to_gnu) <Attr_Size>: Do not strip VIEW_CONVERT_EXPRs from
the prefix in every case.
From-SVN: r271691
Eric Botcazou [Tue, 28 May 2019 08:13:37 +0000 (08:13 +0000)]
trans.c (gnat_to_gnu): Remove superfluous tests on Backend_Overflow_Checks_On_Target and rework comments.
* gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on
Backend_Overflow_Checks_On_Target and rework comments.
From-SVN: r271689
Eric Botcazou [Tue, 28 May 2019 08:00:21 +0000 (08:00 +0000)]
trans.c (walk_nesting_tree): New static function.
* gcc-interface/trans.c (walk_nesting_tree): New static function.
(finalize_nrv): Use it to walk the entire nesting tree.
From-SVN: r271685
Eric Botcazou [Tue, 28 May 2019 07:42:53 +0000 (07:42 +0000)]
decl.c (gnat_to_gnu_entity): Remove obsolete test on Is_For_Access_Subtype.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Remove
obsolete test on Is_For_Access_Subtype.
From-SVN: r271683
Eric Botcazou [Tue, 28 May 2019 07:36:02 +0000 (07:36 +0000)]
decl.c (components_to_record): Set a name on the type created for the REP part, if any.
* gcc-interface/decl.c (components_to_record): Set a name on the type
created for the REP part, if any.
* gcc-interface/utils.c (finish_record_type): Only take the maximum
when merging sizes for a variant part at offset 0.
(merge_sizes): Rename has_rep parameter into max.
From-SVN: r271681
Eric Botcazou [Tue, 28 May 2019 07:23:54 +0000 (07:23 +0000)]
utils.c (gnat_internal_attribute_table): Add support for stack_protect attribute.
* gcc-interface/utils.c (gnat_internal_attribute_table): Add support
for stack_protect attribute.
(handle_stack_protect_attribute): New static function.
From-SVN: r271680
Eric Botcazou [Tue, 28 May 2019 07:21:07 +0000 (07:21 +0000)]
decl.c (intrin_arglists_compatible_p): Do not return false if the internal builtin uses a variable list.
* gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return
false if the internal builtin uses a variable list.
From-SVN: r271679
Xuepeng Guo [Tue, 28 May 2019 02:45:34 +0000 (02:45 +0000)]
Add GCC support to ENQCMD.
gcc/ChangeLog
2019-01-23 Xuepeng Guo <xuepeng.guo@intel.com>
* common/config/i386/i386-common.c
(OPTION_MASK_ISA_ENQCMD_SET,
OPTION_MASK_ISA_ENQCMD_UNSET): New macros.
(ix86_handle_option): Handle -menqcmd.
* config.gcc (enqcmdintrin.h): New header file.
* config/i386/cpuid.h (bit_ENQCMD): New bit.
* config/i386/driver-i386.c (host_detect_local_cpu): Handle
-menqcmd.
* config/i386/i386-builtin-types.def ((INT, PVOID, PCVOID)): New
function type.
* config/i386/i386-builtin.def (__builtin_ia32_enqcmd,
__builtin_ia32_enqcmds): New builtins.
* config/i386/i386-c.c (__ENQCMD__): New macro.
* config/i386/i386-option.c (ix86_target_string): Add
-menqcmd.
(ix86_valid_target_attribute_inner_p): Likewise.
* config/i386/i386-expand.c
(ix86_expand_builtin): Expand IX86_BUILTIN_ENQCMD and
IX86_BUILTIN_ENQCMDS.
* config/i386/i386.h (TARGET_ENQCMD): New.
* config/i386/i386.md (UNSPECV_ENQCMD, UNSPECV_ENQCMDS): New.
(@enqcmd<enqcmd_sfx>_<mode>): New insn pattern.
(movdir64b_<mode>): Parameterize to enable share expansion code
with ENQCMD in function ix86_expand_builtin.
* config/i386/i386.opt: Add -menqcmd.
* config/i386/immintrin.h: Include enqcmdintrin.h.
* config/i386/enqcmdintrin.h: New intrinsic file.
* doc/invoke.texi: Add -menqcmd.
gcc/testsuite/ChangeLog
2019-01-23 Xuepeng Guo <xuepeng.guo@intel.com>
* gcc.target/i386/enqcmd.c: New test.
* gcc.target/i386/enqcmds.c: Likewise.
* g++.dg/other/i386-2.C: Add -menqcmd.
* g++.dg/other/i386-3.C: Likewise.
* gcc.target/i386/sse-12.c: Likewise.
* gcc.target/i386/sse-13.c: Likewise.
* gcc.target/i386/sse-14.c: Likewise.
* gcc.target/i386/sse-23.c: Likewise.
From-SVN: r271678
GCC Administrator [Tue, 28 May 2019 00:16:20 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271677
Jakub Jelinek [Mon, 27 May 2019 21:33:37 +0000 (23:33 +0200)]
gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional on sections construct.
* gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
on sections construct.
* omp-low.c (lower_lastprivate_conditional_clauses): Handle sections
construct.
(lower_omp_sections): Handle lastprivate conditional.
(lower_omp_1) <case GIMPLE_ASSIGN>: Handle sections construct with
lastprivate_conditional_map.
* omp-expand.c (expand_omp_sections): Handle lastprivate conditional.
libgomp/
* testsuite/libgomp.c-c++-common/lastprivate_conditional_4.c: New test.
From-SVN: r271673
Jakub Jelinek [Mon, 27 May 2019 21:31:40 +0000 (23:31 +0200)]
omp-low.c (lower_omp_1): Look through ordered...
* omp-low.c (lower_omp_1) <case GIMPLE_ASSIGN>: Look through ordered,
critical, taskgroup and section regions when looking for a region
with non-NULL lastprivate_conditional_map.
* testsuite/libgomp.c-c++-common/lastprivate-conditional-3.c: New test.
From-SVN: r271672
Jakub Jelinek [Mon, 27 May 2019 21:27:00 +0000 (23:27 +0200)]
re PR libgomp/90641 (libgomp.c-c++-common/lastprivate-conditional-1.c etc FAIL)
PR libgomp/90641
* work.c (gomp_init_work_share): Instead of aligning final ordered
value to multiples of long long alignment, align to that the
first part (ordered team ids) and if inline_ordered_team_ids
is not on a long long alignment boundary within the structure,
use __alignof__ (long long) - 1 pad size always.
* loop.c (GOMP_loop_start): Fix *mem computation if
inline_ordered_team_ids is not aligned on long long alignment boundary
within the structure.
* loop-ull.c (GOMP_loop_ull_start): Likewise.
* sections.c (GOMP_sections2_start): Likewise.
From-SVN: r271671
Iain Sandoe [Mon, 27 May 2019 20:06:22 +0000 (20:06 +0000)]
darwin, x86, testsuite - Match codegen
For this test, we can match the codegen expected in the scan-asms
by avoiding the extra indirection that's mandated by the ABI for
common access and by using -mdynamic-no-pic for the 32b case.
gcc/testsuite/
2019-05-27 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr22076.c: Adjust options to
match codegen expected by the scan-asms.
From-SVN: r271670
Ian Lance Taylor [Mon, 27 May 2019 19:21:22 +0000 (19:21 +0000)]
Makefile.am (check-go-tool): Only chmod check-go-dir if it exists.
* Makefile.am (check-go-tool): Only chmod check-go-dir if it
exists.
* Makefile.in: Regenerate.
From-SVN: r271669
Segher Boessenkool [Mon, 27 May 2019 19:12:19 +0000 (21:12 +0200)]
rs6000: Fix sanitizer build (PR90639)
The assembler code needs to say it uses AltiVec instructions.
libsanitizer/
PR target/90639
* tsan/tsan_rtl_ppc64.S: Add ".machine altivec".
From-SVN: r271668
Uros Bizjak [Mon, 27 May 2019 18:33:23 +0000 (20:33 +0200)]
i386.c (ix86_gen_add3): Remove indirect function.
* config/i386/i386.c (ix86_gen_add3): Remove indirect function.
(*ix86_gen_sub3): Ditto.
(*ix86_gen_sub3_carry): Ditto.
(*ix86_gen_one_cmpl2): Ditto.
(*ix86_gen_andsp): Ditto.
(ix86_init_large_pic_reg): Use gen_add2_insn instead of ix86_gen_add3.
(gen_and2_insn): New static function.
(ix86_expand_prologue): Use gen_and2_insn instead of ix86_gen_andsp.
Use gen_add3_insn instead of ix86_gen_add3.
(ix86_expand_split_stack_prologue): Use gen_add2_insn
instead of ix86_gen_add3.
(legitimize_tls_address): Use gen_add2_insn instead of ix86_gen_add3.
Use gen_sub3_insn instead of ix86_gen_sub3.
* config/i386-expand.c (ix86_split_long_move): Use gen_add2_insn
instead of ix86_gen_add3.
(ix86_expand_strlensi_unroll_1): Use gen_add2_insn instead of
ix86_gen_add3. Use gen_sub3_insn instead of ix86_gen_sub3.
(construct_plt_address): Use gen_add2_insn instead of ix86_gen_add3.
* config/i386/i386-options.c (ix86_option_override_internal):
Do not initialize ix86_gen_add3, ix86_gen_sub3, ix86_gen_sub3_carry,
ix86_gen_one_cmpl2 and ix86_gen_andsp.
From-SVN: r271667
Eric Botcazou [Mon, 27 May 2019 16:08:19 +0000 (16:08 +0000)]
dwarf2out.c (resolve_args_picking_1): Deal with DW_OP_GNU_addr_index and DW_OP_GNU_const_index opcodes.
* dwarf2out.c (resolve_args_picking_1): Deal with DW_OP_GNU_addr_index
and DW_OP_GNU_const_index opcodes.
From-SVN: r271664
Uros Bizjak [Mon, 27 May 2019 14:37:02 +0000 (16:37 +0200)]
i386.h (STACK_SIZE_MODE): Define.
* config/i386/i386.h (STACK_SIZE_MODE): Define.
From-SVN: r271663
Christophe Lyon [Mon, 27 May 2019 13:37:57 +0000 (13:37 +0000)]
[testsuite,aarch64,arm] PR88440: Fix testcases
2019-05-27 Christophe Lyon <christophe.lyon@linaro.org>
PR tree-optimization/88440
gcc/testsuite/
* gcc.target/aarch64/sve/index_offset_1.c: Add -fno-tree-loop-distribute-patterns.
* gcc.target/aarch64/sve/single_1.c: Likewise.
* gcc.target/aarch64/sve/single_2.c: Likewise.
* gcc.target/aarch64/sve/single_3.c: Likewise.
* gcc.target/aarch64/sve/single_4.c: Likewise.
* gcc.target/aarch64/sve/vec_init_1.c: Likewise.
* gcc.target/aarch64/vect-fmovd-zero.c: Likewise.
* gcc.target/aarch64/vect-fmovf-zero.c: Likewise.
* gcc.target/arm/ivopts.c: Likewise.
From-SVN: r271662
Richard Biener [Mon, 27 May 2019 13:18:12 +0000 (13:18 +0000)]
re PR tree-optimization/90637 (ICE in vect_loop_versioning, at tree-vect-loop-manip.c:3055)
2019-05-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/90637
* tree-ssa-sink.c (statement_sink_location): Honor the
computed sink location for single-uses.
* gcc.dg/gomp/pr90637.c: New testcase.
From-SVN: r271661
Eric Botcazou [Mon, 27 May 2019 11:43:17 +0000 (11:43 +0000)]
trans.c (Call_to_gnu): Do not initialize the temporary created out of addressability concerns if...
* gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary
created out of addressability concerns if it's for the _Init parameter
of an initialization procedure.
From-SVN: r271659
Eric Botcazou [Mon, 27 May 2019 11:34:35 +0000 (11:34 +0000)]
ada-builtin-types.def: New file.
* gcc-interface/ada-builtin-types.def: New file.
* gcc-interface/ada-builtins.def: Likewise.
* gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro.
(BUILT_IN_UNLIKELY): Likewise.
* gcc-interface/trans.c (independent_iterations_p): Initialize the
auto-vector to 16 elements.
(Call_to_gnu): Remove local variable and change the vector of actual
parameters to an auto-vector. Do not convert actual parameters to
the argument type for front-end built-in functions. Add support for
front-end built-in functions.
(build_noreturn_cond): Use internal instead of built-in function.
* gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def
(install_builtin_function_types): Likewise.
(install_builtin_functions): Include ada-builtins.def first.
From-SVN: r271658
Eric Botcazou [Mon, 27 May 2019 11:12:28 +0000 (11:12 +0000)]
utils.c (maybe_pad_type): Issue the warning for the specific case of component types preferably.
* gcc-interface/utils.c (maybe_pad_type): Issue the warning for the
specific case of component types preferably.
From-SVN: r271655
Eric Botcazou [Mon, 27 May 2019 11:04:48 +0000 (11:04 +0000)]
trans.c (Identifier_to_gnu): Minor tweaks.
* gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks.
(gnat_to_gnu): Do not convert the result if it is a reference to an
unconstrained array used as the prefix of an attribute reference that
requires an lvalue.
From-SVN: r271653
Richard Biener [Mon, 27 May 2019 10:52:14 +0000 (10:52 +0000)]
re PR tree-optimization/90610 (526.blender_r miscompared on znver1 with -Ofast -march=native since r271463)
2019-05-27 Richard Biener <rguenther@suse.de>
PR middle-end/90610
* match.pd (vec_perm): Avoid clobbering op0 when not generating
a bit-insert.
From-SVN: r271652
Eric Botcazou [Mon, 27 May 2019 10:44:55 +0000 (10:44 +0000)]
trans.c (Gigi_Types_Compatible): New predicate.
* gcc-interface/trans.c (Gigi_Types_Compatible): New predicate.
(Identifier_to_gnu): Use it to assert that the type of the identifier
and that of its entity are compatible for gigi. Rename a couple of
local variables and separate the processing of the result type.
From-SVN: r271650
Eric Botcazou [Mon, 27 May 2019 10:16:04 +0000 (10:16 +0000)]
trans.c (Call_to_gnu): Use the unpadded type when putting back an intermediate conversion the type of...
* gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when
putting back an intermediate conversion the type of the actuals.
From-SVN: r271647
Eric Botcazou [Mon, 27 May 2019 09:14:30 +0000 (09:14 +0000)]
trans.c (gnat_to_gnu): Convert the count to the unsigned version of its base type before proceeding.
* gcc-interface/trans.c (gnat_to_gnu) <Shift operations>: Convert the
count to the unsigned version of its base type before proceeding.
From-SVN: r271646
Richard Biener [Mon, 27 May 2019 07:39:14 +0000 (07:39 +0000)]
re PR testsuite/90615 (several vector test cases fail starting with r271553)
2019-05-27 Richard Biener <rguenther@suse.de>
PR testsuite/90615
* gcc.dg/vect/costmodel/ppc/costmodel-vect-31b.c: Add
-fno-tree-loop-distribute-patterns.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-33.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-76a.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c: Likewise.
* gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c: Likewise.
* gcc.target/powerpc/vsx-vectorize-1.c: Likewise.
From-SVN: r271645
GCC Administrator [Mon, 27 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271644
Ian Lance Taylor [Mon, 27 May 2019 00:14:02 +0000 (00:14 +0000)]
re PR go/90635 (typo in libgo/configure.ac)
PR go/90635
libgo: correct typo in USE_LIBFFI AM_CONDITIONAL
Only affects the case of passing --without-libffi to configure.
Fixes https://gcc.gnu.org/PR90635
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178998
From-SVN: r271640
Ian Lance Taylor [Mon, 27 May 2019 00:10:34 +0000 (00:10 +0000)]
re PR go/90614 (gcc-9.1.0/libgo/go/syscall/wait.c:54:22: error: unused parameter ‘w’ [-Werror=unused-parameter] Continued (uint32_t *w))
PR go/90614
syscall: avoid unused parameter error if WIFCONTINUED not defined
Fixes https://gcc.gnu.org/PR90614
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178997
From-SVN: r271638
Uros Bizjak [Sun, 26 May 2019 22:48:24 +0000 (00:48 +0200)]
i386.md (@leave_<mode>): New expander.
* config/i386/i386.md (@leave_<mode>): New expander.
(*leave): Rename from leave.
(*leave_rex64): Rename from leave_rex64.
(@monitorx_<mode>): Rename from monitorx_<mode>.
(@clzero_<mode>): Rename from clzero_<mode>.
* config/i386/sse.md (@sse3_monitor_<mode>): Rename from
sse3_monitor_<mode>.
* config/i386/i386.c (*ix86_gen_leave): Remove indirect function.
(*ix86_gen_monitor): Ditto.
(*ix86_gen_monitorx): Ditto.
(*ix86_gen_clzero): Ditto.
(*ix86_gen_one_cmpl2): Ditto.
(ix86_emit_leave): Use gen_leave instead of ix86_gen_leave.
* config/i386/i386-expand.c (ix86_expand_builtin)
<case IX86_BUILTIN_MONITOR>: Use gen_sse3_monitor
instead of ix86_gen_monitor.
<case IX86_BUILTIN_MONITORX>: Use gen_monitorx
instead of ix86_gen_monitorx.
<case IX86_BUILTIN_CLZERO>: Use gen_clzero
instead of ix86_gen_clzero.
* config/i386/i386-options.c (ix86_option_override_internal):
Do not initialize ix86_gen_leave, ix86_gen_monitor,
ix86_gen_monitorx, ix86_gen_clzero and ix86_gen_one_cmpl2.
* config/i386/i386.md (@tls_global_dynamic_64_<mode>):
Rename from tls_global_dynamic_64_<mode>.
(@tls_local_dynamic_base_64_<mode>): Rename from
tls_local_dynamic_base_64_<mode>.
* config/i386/i386.c (*ix86_gen_tls_global_dynamic_64):
Remove indirect function.
(*ix86_gen_tls_local_dynamic_base_64): Ditto.
(legitimize_tls_address): Use gen_tls_global_dynamic_64 function
instead of ix86_gen_tls_global_dynamic_64.
Use gen_tls_local_dynamic_base_64 instead of
ix86_gen_tls_local_dynamic_base_64.
* config/i386/i386-options.c (ix86_option_override_internal):
Do not initialize ix86_gen_tls_global_dynamic_64 and
ix86_gen_tls_local_dynamic_base_64.
* config/i386/i386.md (@pro_epilogue_adjust_stack_add_<mode>)
Rename from pro_epilogue_adjust_stack_<mode>_add.
(@pro_epilogue_adjust_stack_sub_<mode>)
Rename from pro_epilogue_adjust_stack_<mode>_sub.
(@allocate_stack_worker_probe_<mode>):
Rename from allocate_stack_worker_probe_<mode>.
(allocate_stack): Use gen_allocate_stack_worker_probe.
(probe_stack): Use gen_probe_stack_1.
(@probe_stack_1_<mode>): Rename from probe_stack_<mode>.
(@adjust_stack_and_probe_<mode>): Rename from
adjust_stack_and_probe<mode>.
(@probe_stack_range_<mode>): Rename from probe_stack_range<mode>.
(stack_protect_set): Use gen_stack_protect_set_1.
(@stack_protect_set_1_<mode>): Rename from stack_protect_set_<mode>.
(stack_protect_test): Use gen_stack_protect_test_1.
(@stack_protect_test_1_<mode>): Rename from stack_protect_test_<mode>.
* config/i386/i386.c (*ix86_gen_allocate_stack_worker):
Remove indirect function.
(*ix86_gen_adjust_stack_and_probe): Ditto.
(*ix86_gen_probe_stack_range): Ditto.
(pro_epilogue_adjust_stack): Use gen_pro_epilogue_adjust_stack_add
instead of gen_pro_epilogue_adjust_stack_{si,di}_add.
(ix86_adjust_stack_and_probe_stack_clash): Use
gen_adjust_stack_and_probe instead of ix86_gen_adjust_stack_and_probe.
(ix86_adjust_stack_and_probe): Ditto.
(ix86_emit_probe_stack_range): Use gen_probe_stack_range instead
of ix86_gen_probe_stack_range.
(ix86_expand_prologue): Use gen_pro_epilogue_adjust_stack_sub
instead of gen_pro_epilogue_adjust_stack_{si,di}_sub.
* config/i386/x86-tune-sched.c (ix86_macro_fusion_pair_p):
Include insn-opinit.h. Use code_for_stack_protect_test_1 instead of
CODE_FOR_stack_protect_test_{si,di}.
* config/i386/i386-options.c (ix86_option_override_internal):
Do not initialize ix86_gen_allocate_stack_worker,
ix86_gen_adjust_stack_and_probe and ix86_gen_probe_stack_range.
From-SVN: r271636
Gerald Pfeifer [Sun, 26 May 2019 19:46:09 +0000 (19:46 +0000)]
appendix_contributing.xml: Update pointer to C++ standard at ansi.org.
* doc/xml/manual/appendix_contributing.xml: Update pointer to
C++ standard at ansi.org.
From-SVN: r271635
Iain Sandoe [Sun, 26 May 2019 19:35:14 +0000 (19:35 +0000)]
darwin, x86, testsuite - Amend three PIE tests,
Darwin requires PIC code in order to support PIE, amend the test scan-asms
to match this.
2019-05-26 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr39013-1.c: Adjust scan-asms for PIE to
account for PIC code on Darwin.
* gcc.target/i386/pr39013-2.c: Likewise.
* gcc.target/i386/pr64317.c: Likewise.
From-SVN: r271634
Gerald Pfeifer [Sun, 26 May 2019 17:33:52 +0000 (17:33 +0000)]
invoke.texi (Link Options): Many editorial changes around -flinker-output.
* doc/invoke.texi (Link Options): Many editorial changes around
-flinker-output.
From-SVN: r271633
John David Anglin [Sun, 26 May 2019 15:16:50 +0000 (15:16 +0000)]
linux-unwind.h (pa32_fallback_frame_state): Add cast.
* config/pa/linux-unwind.h (pa32_fallback_frame_state): Add cast.
From-SVN: r271631
Thomas Koenig [Sun, 26 May 2019 14:02:51 +0000 (14:02 +0000)]
re PR fortran/90539 (481.wrf slowdown by 25% on Intel Kaby with -Ofast -march=native starting with r271377)
2019-05-26 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90539
* trans-types.c (get_formal_from_actual_arglist): Set rank
and lower bound for assumed size arguments.
From-SVN: r271630
Rainer Orth [Sun, 26 May 2019 09:23:52 +0000 (09:23 +0000)]
Added ChangeLog entry for last commit.
From-SVN: r271629
Rainer Orth [Sun, 26 May 2019 09:21:40 +0000 (09:21 +0000)]
Remove Solaris 10-only note about -mvect8-ret-in-mem
From-SVN: r271628
GCC Administrator [Sun, 26 May 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271627
Iain Sandoe [Sat, 25 May 2019 19:46:53 +0000 (19:46 +0000)]
darwin, x86, testsuite - Amend popcnt match string for Darwin.
Darwin uses a different spelling for popcnt (popcnt instead of popcntw).
Check for this in the test.
2019-05-25 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr59874-3.c: Use the spelling of popcnt
expected for Darwin.
From-SVN: r271623
Iain Sandoe [Sat, 25 May 2019 19:42:05 +0000 (19:42 +0000)]
darwin, x86, testsuite - Check for an expected error on Darwin.
The test requests an alignment which exceeds the maximum object
file aligment for Darwin, rather than skipping it - test that we
see the expected error.
2019-05-25 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr89261.c: Test that the alignment required
by the test correctly produces the expected error on Darwin.
From-SVN: r271622
Iain Sandoe [Sat, 25 May 2019 19:36:27 +0000 (19:36 +0000)]
darwin, x86, testsuite - require alias on a test using it.
2019-05-25 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr82659-3.c: Require alias support.
From-SVN: r271621
Marek Polacek [Sat, 25 May 2019 14:39:12 +0000 (14:39 +0000)]
PR c++/90572 - wrong disambiguation in friend declaration.
* parser.c (cp_parser_constructor_declarator_p): Don't allow missing
typename for friend declarations.
* g++.dg/cpp2a/typename16.C: New test.
* g++.dg/parse/friend13.C: New test.
From-SVN: r271619
GCC Administrator [Sat, 25 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271618
John David Anglin [Fri, 24 May 2019 23:12:16 +0000 (23:12 +0000)]
re PR target/90530 (Invalid SUBREG insn generated by reload)
PR target/90530
* config/pa/pa.c (pa_can_change_mode_class): Accept mode changes from
DImode to SImode in floating-point registers on 64-bit target.
* config/pa/pa.md (umulsidi3): Change nonimmediate_operand to
register_operand in xmpyu patterns.
From-SVN: r271611
Jakub Jelinek [Fri, 24 May 2019 21:31:59 +0000 (23:31 +0200)]
tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__CONDTEMP_.
* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__CONDTEMP_.
* tree.h (OMP_CLAUSE_DECL): Use OMP_CLAUSE__CONDTEMP_ instead of
OMP_CLAUSE__REDUCTEMP_.
* tree.c (omp_clause_num_ops, omp_clause_code_name): Add
OMP_CLAUSE__CONDTEMP_.
(walk_tree_1): Handle OMP_CLAUSE__CONDTEMP_.
* tree-pretty-print.c (dump_omp_clause): Likewise.
* tree-nested.c (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Likewise.
* gimplify.c (enum gimplify_omp_var_data): Use hexadecimal constants
instead of decimal. Add GOVD_LASTPRIVATE_CONDITIONAL.
(gimplify_scan_omp_clauses): Don't reject lastprivate conditional
on OMP_FOR.
(gimplify_omp_for): Warn and disable conditional modifier from
lastprivate on loop iterators.
* omp-general.h (struct omp_for_data): Add lastprivate_conditional
member.
* omp-general.c (omp_extract_for_data): Initialize it.
* omp-low.c (struct omp_context): Add lastprivate_conditional_map
member.
(delete_omp_context): Delete it.
(lower_lastprivate_conditional_clauses): New function.
(lower_lastprivate_clauses): Add BODY_P and CSTMT_LIST arguments,
handle lastprivate conditional clauses.
(lower_reduction_clauses): Add CLIST argument, emit it into
the critical section if any.
(lower_omp_sections): Adjust lower_lastprivate_clauses and
lower_reduction_clauses callers.
(lower_omp_for_lastprivate): Add CLIST argument, pass it through
to lower_lastprivate_clauses.
(lower_omp_for): Call lower_lastprivate_conditional_clauses, adjust
lower_omp_for_lastprivate and lower_reduction_clauses callers, emit
clist into a critical section if not emitted there already by
lower_reduction_clauses.
(lower_omp_taskreg, lower_omp_teams): Adjust lower_reduction_clauses
callers.
(lower_omp_1): Handle GIMPLE_ASSIGNs storing into lastprivate
conditional variables.
* omp-expand.c (determine_parallel_type): Punt if OMP_CLAUSE__CONDTEMP_
clause is present.
(expand_omp_for_generic, expand_omp_for_static_nochunk,
expand_omp_for_static_chunk): Handle lastprivate conditional.
(expand_omp_for): Handle fd.lastprivate_conditional like
fd.have_reductemp.
gcc/testsuite/
* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
sorry for omp for.
* c-c++-common/gomp/lastprivate-conditional-3.c: New test.
libgomp/
* testsuite/libgomp.c-c++-common/lastprivate-conditional-1.c: New test.
* testsuite/libgomp.c-c++-common/lastprivate-conditional-2.c: New test.
From-SVN: r271610
Jonathan Wakely [Fri, 24 May 2019 15:39:35 +0000 (16:39 +0100)]
Fix std::midpoint(T*, T*) for reversed arguments
* include/std/numeric (midpoint(T*, T*)): Fix incorrect result.
* testsuite/26_numerics/midpoint/pointer.cc: Change "compile" test
to "run".
From-SVN: r271606
Andrew Stubbs [Fri, 24 May 2019 15:25:41 +0000 (15:25 +0000)]
GCN: Wait for exit value to write before exiting.
2019-05-24 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn-run.c (main): Set a non-zero return value if the
kernel does not exit cleanly.
* config/gcn/gcn.md (gcn_return): Insert s_waitcnt before s_dcache_wb.
From-SVN: r271605
Jason Merrill [Fri, 24 May 2019 14:38:44 +0000 (10:38 -0400)]
Revert "* gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE."
This reverts commit
ac0f04360cc04e5b80a7d74f7edc47e395d2e744.
From-SVN: r271604
Jonathan Wakely [Fri, 24 May 2019 13:00:26 +0000 (14:00 +0100)]
Fix broken shared_ptr test
* testsuite/20_util/shared_ptr/cons/alias-rval.cc: Fix test.
* testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused function.
From-SVN: r271603
Clement Chigot [Fri, 24 May 2019 11:55:21 +0000 (11:55 +0000)]
Makefile.am (BUILDTESTS): Remove test_elf, add test_elf_32 and test_elf_64.
* Makefile.am (BUILDTESTS): Remove test_elf, add test_elf_32 and
test_elf_64.
* Makefile.in: Regenerate.
From-SVN: r271602
Richard Biener [Fri, 24 May 2019 11:31:11 +0000 (11:31 +0000)]
re PR middle-end/90607 (gcc.dg/pr53265.c FAILs)
2019-05-24 Richard Biener <rguenther@suse.de>
PR testsuite/90607
* tree-loop-distribution.c (struct partition): Add location
member.
(partition_alloc): Initialize all fields.
(generate_memset_builtin): Use the location recorded in the
partition for the generated call.
(generate_memcpy_builtin): Likewise.
(classify_partition): Record the location of a single store
as location for the partition.
* gcc.dg/pr53265.c: Amend for new expected diagnostic.
From-SVN: r271601
Andrew Stubbs [Fri, 24 May 2019 11:06:18 +0000 (11:06 +0000)]
Fix 64-bit addition in prologue.
2019-05-24 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn.c (gcn_expand_prologue): Use gen_addsi3_scalar_carry
for lo-part.
From-SVN: r271600
Matthew Malcomson [Fri, 24 May 2019 10:39:38 +0000 (10:39 +0000)]
[aarch64] Change two function declaration types
Commit r271514 missed changing the type of two functions in
aarch64-protos.h. The function definitions had been updated to use
uint64_t while the function declarations had been missed.
They were missed since I only tested the patch on aarch64 where
`unsigned long` is the same as `uint64_t`.
This patch updates these declarations in aarch64-protos.h.
Tested by building an aarch64 cross-compiler on arm-none-linux-gnu (so
that `unsigned long` and `uint64_t` are different and would give error
messages), and bootstrapping on aarch64-none-linux-gnu.
Also manually tested command line options to see that
-march=armv8-a+typo prints out the expected flags while using the new
feature flags does not complain about missing flags.
gcc/ChangeLog:
2019-05-24 Matthew Malcomson <matthew.malcomson@arm.com>
PR target/90588
* common/config/aarch64/aarch64-common.c
(aarch64_rewrite_selected_cpu): Change local temporary variable
type from unsigned long to uint64_t.
* config/aarch64/aarch64-protos.h (aarch64_parse_extension,
aarch64_get_extension_string_for_isa_flags): Change declaration to
match new definition by replacing unsigned long with uint64_t.
From-SVN: r271599
Jakub Jelinek [Fri, 24 May 2019 10:15:16 +0000 (12:15 +0200)]
re PR tree-optimization/90106 (builtin sqrt() ignoring libm's sqrt call result)
PR tree-optimization/90106
PR testsuite/90517
* gcc.dg/cdce1.c: Don't scan-assembler, instead -fdump-tree-optimized
and scan-tree-dump for tail call.
* gcc.dg/cdce2.c: Likewise.
From-SVN: r271598
Jakub Jelinek [Fri, 24 May 2019 08:59:37 +0000 (10:59 +0200)]
re PR libgomp/90585 (libgomp hsa plugin ftbfs in the x32 multilib variant)
PR libgomp/90585
* plugin/plugin-hsa.c: Include gstdint.h. Include inttypes.h only if
HAVE_INTTYPES_H is defined.
(print_uint64_t): New typedef.
(PRIu64): Define if HAVE_INTTYPES_H is not defined.
(print_kernel_dispatch, run_kernel): Use PRIu64 macro instead of
"lu", cast uint64_t HSA_DEBUG and fprintf arguments to print_uint64_t.
(release_kernel_dispatch): Likewise. Cast shadow->debug to uintptr_t
before casting to void *.
* plugin/plugin-nvptx.c: Include gstdint.h instead of stdint.h.
* oacc-mem.c: Don't include config.h nor stdint.h.
* target.c: Don't include config.h.
* oacc-cuda.c: Likewise.
* oacc-host.c: Don't include stdint.h.
From-SVN: r271597
Jakub Jelinek [Fri, 24 May 2019 08:58:50 +0000 (10:58 +0200)]
re PR target/90568 (stack protector should use cmp or sub, not xor, to allow macro-fusion on x86)
PR target/90568
* config/i386/x86-tune-sched.c (ix86_macro_funsion_pair_p): Call
gen_attr_type just once instead of 4-7 times. Formatting fixes.
Handle stack_protect_test_<mode> codegen similarly to corresponding
sub instruction.
From-SVN: r271596
Richard Biener [Fri, 24 May 2019 08:48:14 +0000 (08:48 +0000)]
re PR tree-optimization/88440 (size optimization of memcpy-like code)
2019-05-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/88440
* opts.c (default_options_table): Enable -ftree-loop-distribute-patterns
at -O[2s]+.
* tree-loop-distribution.c (generate_memset_builtin): Fold the
generated call.
(generate_memcpy_builtin): Likewise.
(distribute_loop): Pass in whether to only distribute patterns.
(prepare_perfect_loop_nest): Also allow size optimization.
(pass_loop_distribution::execute): When optimizing a loop
nest for size allow pattern replacement.
* gcc.dg/tree-ssa/ldist-37.c: New testcase.
* gcc.dg/tree-ssa/ldist-38.c: Likewise.
* gcc.dg/vect/vect.exp: Add -fno-tree-loop-distribute-patterns.
* gcc.dg/tree-ssa/ldist-37.c: Adjust.
* gcc.dg/tree-ssa/ldist-38.c: Likewise.
* g++.dg/tree-ssa/pr78847.C: Likewise.
* gcc.dg/autopar/pr39500-1.c: Likewise.
* gcc.dg/autopar/reduc-1char.c: Likewise.
* gcc.dg/autopar/reduc-7.c: Likewise.
* gcc.dg/tree-ssa/ivopts-lt-2.c: Likewise.
* gcc.dg/tree-ssa/ivopts-lt.c: Likewise.
* gcc.dg/tree-ssa/predcom-dse-1.c: Likewise.
* gcc.dg/tree-ssa/predcom-dse-2.c: Likewise.
* gcc.dg/tree-ssa/predcom-dse-3.c: Likewise.
* gcc.dg/tree-ssa/predcom-dse-4.c: Likewise.
* gcc.dg/tree-ssa/prefetch-7.c: Likewise.
* gcc.dg/tree-ssa/prefetch-8.c: Likewise.
* gcc.dg/tree-ssa/prefetch-9.c: Likewise.
* gcc.dg/tree-ssa/scev-11.c: Likewise.
* gcc.dg/vect/costmodel/i386/costmodel-vect-31.c: Likewise.
* gcc.dg/vect/costmodel/i386/costmodel-vect-33.c: Likewise.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c: Likewise.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c: Likewise.
* gcc.target/i386/pr30970.c: Likewise.
* gcc.target/i386/vect-double-1.c: Likewise.
* gcc.target/i386/vect-double-2.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-2.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-26.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-28.c: Likewise.
* gcc.dg/tree-ssa/gen-vect-32.c: Likewise.
* gfortran.dg/vect/vect-5.f90: Likewise.
* gfortran.dg/vect/vect-8.f90: Likewise.
From-SVN: r271595
Iain Sandoe [Fri, 24 May 2019 07:25:16 +0000 (07:25 +0000)]
add missed Changelog.
From-SVN: r271592