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
Iain Sandoe [Fri, 24 May 2019 07:24:26 +0000 (07:24 +0000)]
Darwin, x86, testsuite - Make match strings more specific.
Some of the i386.exp tests fail on Darwin (and at least one passes
incorrectly on Linux) because their scan-asm match strings are too
general. In some cases the strings also match instances in the .file
and size directives or in comment output. This patch makes the match
strings more specific.
2019-05-24 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pconfig-1.c: Scan for the string in the generated
code, not in comments or miscellaneous directives. Adjust expected
count.
* gcc.target/i386/pr18041-1.c: Likewise.
* gcc.target/i386/pr18041-2.c: Likewise.
* gcc.target/i386/wbinvd-1.c: Likewise.
* gcc.target/i386/wbnoinvd-1.c: Likewise.
* gcc.target/i386/pr66819-3.c: Specifically, check that there is no
call to "bar".
* gcc.target/i386/pr66819-4.c: Likewise.
* gcc.target/i386/pr82662.c
* gcc.target/i386/ptwrite2.c: Make the checks look for the specific
destination register, don't try the m32 test on m64 targets.
From-SVN: r271591
Iain Sandoe [Fri, 24 May 2019 07:11:46 +0000 (07:11 +0000)]
Darwin, x86, testsuite - Adjust test labels.
A couple of the i386.exp tests fail because the label spelling used
is different between ELF and Mach-O targets. Adjusted here.
2019-05-24 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/pr67985-2.c: Adjust label checks for
Darwin.
* gcc.target/i386/pr77881.c: Likewise.
From-SVN: r271590
Iain Sandoe [Fri, 24 May 2019 07:05:25 +0000 (07:05 +0000)]
Darwin, x86, testsuite - Disable tests that cannot pass.
A few of the i386.exp target tests cannot pass on Darwin
because either the port doesn't support a feature, or the
ABI demands sufficiently different codegen that matching
the output with scan-asms would require a different test.
Disabling those tests here.
2019-05-24 Iain Sandoe <iain@sandoe.co.uk>
* gcc.target/i386/falign-functions-2.c: Skip for Darwin.
* gcc.target/i386/pr70738-7.c: Likewise.
* gcc.target/i386/pr24414.c: Likewise.
From-SVN: r271589
GCC Administrator [Fri, 24 May 2019 00:16:25 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271588
Jonathan Wakely [Thu, 23 May 2019 21:41:08 +0000 (22:41 +0100)]
Fix testsuite bugs
One of the static assertions in 20_util/function_objects/invoke/1.cc was
wrong, but didn't fail because by default it was compiled with
-std=gnu++14 which didn't use that static assertion. Split out the C++17
parts to a new file that always runs with -std=gnu++17, so those checks
are always done.
The 23_containers/unordered_set/allocator/ext_ptr.cc test is supposed to
be a run-time test but was unintentionally compile-only.
* testsuite/20_util/function_objects/invoke/1.cc: Move C++17-specific
tests to ...
* testsuite/20_util/function_objects/invoke/3.cc: New test.
* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Change
"compile" test to "run".
From-SVN: r271584
Jonathan Wakely [Thu, 23 May 2019 21:41:02 +0000 (22:41 +0100)]
LWG 2996 add rvalue overloads for shared_ptr aliasing and casting
* doc/xml/manual/intro.xml: Document LWG DR 2996 change.
* doc/html/*: Regenerate.
* include/bits/shared_ptr.h (shared_ptr(shared_ptr&&, T*)): Add
rvalue aliasing constructor.
(static_pointer_cast, const_pointer, dynamic_pointer_cast)
(reinterpret_pointer_cast): Add overloads taking rvalues.
* include/bits/shared_ptr_base.h (__shared_ptr(__shared_ptr&&, T*)):
Add rvalue aliasing constructor.
* testsuite/20_util/shared_ptr/casts/1.cc: Change "compile" test to
"run" and check return values as well as types.
* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
* testsuite/20_util/shared_ptr/casts/rval.cc: New test.
* testsuite/20_util/shared_ptr/cons/alias-rval.cc: New test.
* testsuite/20_util/shared_ptr/cons/alias.cc: Remove unused return
values.
From-SVN: r271583
Jonathan Wakely [Thu, 23 May 2019 21:40:56 +0000 (22:40 +0100)]
LWG 2921 remove packaged_task constructors taking allocators
* doc/xml/manual/evolution.xml: Document LWG DR 2921 change.
* doc/xml/manual/intro.xml: Likewise.
* include/std/future (__create_task_state): Add default arguments
to make providing an allocator optional.
(packaged_task::packaged_task(F&&)): Call __create_task_state directly
instead of delegating to another constructor.
(packaged_task::packaged_task(allocator_arg_t, const A&, ...)): Do not
define allocator-extended constructors for C++17 and later.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Only run test for
C++11 and C++14.
* testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
* testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
From-SVN: r271582
Iain Sandoe [Thu, 23 May 2019 20:51:04 +0000 (20:51 +0000)]
darwin, x86 - disable '-mfentry' for the port.
This can't work without special support because placing
the call directly after the function label breaks the
ABI requirement that call sites are 16byte aligned.
gcc/
2019-05-23 Iain Sandoe <iain@sandoe.co.uk>
* config/i386/darwin.h: Reject -mfentry*.
* doc/sourcebuild.texi: Document mfentry target support.
gcc/testsuite/
2019-05-23 Iain Sandoe <iain@sandoe.co.uk>
* lib/target-supports.exp (check_effective_target_mfentry): New.
* gcc.target/i386/fentry-override.c: Require effective target mfentry.
* gcc/testsuite/gcc.target/i386/fentry.c: Likewise
* gcc.target/i386/fentryname1.c: Likewise
* gcc.target/i386/fentryname2.c: Likewise
* gcc.target/i386/fentryname3.c: Likewise
* gcc.target/i386/nop-mcount.c: Likewise
* gcc.target/i386/pr82699-2.c: Likewise
* gcc.target/i386/pr82699-4.c: Likewise
* gcc.target/i386/pr82699-5.c: Likewise
* gcc.target/i386/pr82699-6.c: Likewise
* gcc.target/i386/returninst1.c: Likewise
* gcc.target/i386/returninst2.c: Likewise
* gcc.target/i386/returninst3.c : Likewise
From-SVN: r271580
Bill Schmidt [Thu, 23 May 2019 20:33:02 +0000 (20:33 +0000)]
rs6000.c (rs6000_global_entry_point_needed_p): Rename to rs6000_global_entry_point_prologue_needed_p.
[gcc]
2019-05-22 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000.c (rs6000_global_entry_point_needed_p):
Rename to rs6000_global_entry_point_prologue_needed_p. Return
false for PC-relative functions.
(rs6000_output_function_prologue): Change called function name to
rs6000_global_entry_point_prologue_needed_p. Emit ".localentry
name,1" for PC-relative functions.
(rs6000_elf_declare_function_name): Change called function name to
rs6000_global_entry_point_prologue_needed_p.
[gcc/testsuite]
2019-05-22 Bill Schmidt <wschmidt@linux.ibm.com>
* gcc.target/powerpc/localentry-1.c: New file.
From-SVN: r271577
Uros Bizjak [Thu, 23 May 2019 19:46:56 +0000 (21:46 +0200)]
re PR target/90552 (attribute((optimize(3))) not overriding -Os)
PR target/90552
* config/i386/i386.c (gen_rtx_cost):
Use ix86_tune_cost instead of ix86_cost.
testsuite/ChangeLog:
PR target/90552
* gcc.target/i386/pr90552.c: New test.
From-SVN: r271576
Bill Schmidt [Thu, 23 May 2019 18:24:22 +0000 (18:24 +0000)]
rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Add OPTION_MASK_PCREL.
2019-05-22 Bill Schmidt <wschmidt@linux.ibm.com>
Michael Meissner <meissner@linux.ibm.com>
Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Add
OPTION_MASK_PCREL.
(POWERPC_MASKS): Add OPTION_MASK_PCREL.
* config/rs6000/rs6000-protos.h (rs6000_pcrel_p): New prototype.
(rs6000_fndecl_pcrel_p): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Report
error if -mpcrel is requested without -mcpu=future.
(rs6000_opt_masks): Add entry for pcrel.
(rs6000_fndecl_pcrel_p): New function.
(rs6000_pcrel_p): Likewise.
* config/rs6000/rs6000.opt (mpcrel): New option.
* doc/invoke.texi: Document -mpcrel and -mno-pcrel.
Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>
Co-Authored-By: Segher Boessenkool <segher@kernel.crashing.org>
From-SVN: r271575
Hans-Peter Nilsson [Thu, 23 May 2019 18:02:05 +0000 (18:02 +0000)]
From what I understand of the libstdc++/83237 thread at
<https://gcc.gnu.org/ml/gcc-patches/2017-12/msg00573.html>, the
high numbers are not arbitrary, so it seems wrong to try
lowering them, or we'd just waste cycles testing nothing, or
worse, ending up with a bogus error indication. Better to just
plain disable this part of the test for simulator targets; I
assume the results should be the same on any IEEE-float target,
i.e. no target-specific things going on here that'd raise a need
to cover it everywhere.
With this part of the test disabled, I saw the test finishing in
(time) "124.74s user" where it was before "1120.26s user"
running the cris-elf-run simulator on a "i7-4770K CPU @ 3.50GHz"
host. Most certainly that indidates that the remainder of the
test is still too much for *some* host+simulator combos, but I'm
happy with the runtime lowered to 1/5 of the timeout (10
minutes) on this particular combination, and I'd think this
fixes timeouts for many other simulator combos too.
This construct (disabling or lowering limits for simulators) is
used elsewhere in the libstdc++ test-suite and in particular the
SIMULATOR_TEST macro is used in the testsuite machinery (though
AFAICT not in testDiscreteDist).
* testsuite/26_numerics/random/poisson_distribution/operators/values.cc:
Don't run the libstdc++/83237 part on simulator targets.
From-SVN: r271574
Mark Eggleston [Thu, 23 May 2019 17:20:58 +0000 (17:20 +0000)]
fmt_f_default_field_width_1.f90: Hide REAL(16) behind __GFC_REAL_16__.
2019-05-23 Mark Eggleston <mark.eggleston@codethink.com>
* gfortran.dg/fmt_f_default_field_width_1.f90: Hide REAL(16) behind
__GFC_REAL_16__. Add -cpp to dg-options.
* gfortran.dg/fmt_f_default_field_width_2.f90: Ditto.
* gfortran.dg/fmt_f_default_field_width_3.f90: Ditto.
* gfortran.dg/fmt_g_default_field_width_1.f90: Ditto.
* gfortran.dg/fmt_g_default_field_width_2.f90: Ditto.
* gfortran.dg/fmt_g_default_field_width_3.f90: Ditto.
From-SVN: r271573
Jan Hubicka [Thu, 23 May 2019 16:07:07 +0000 (18:07 +0200)]
re PR tree-optimization/90576 (SPEC CPU2006 450.soplex miscompiled with -Os -flto after r271413)
PR tree-optimization/90576
* tree-ssa-alias.c (compare_sizes): Remove dead calls to
poly_int_tree_p.
(aliasing_component_refs_p): Fix three way size compare conditional;
give up earlier in case we can not decide on equivalence.
Co-Authored-By: Martin Liska <mliska@suse.cz>
From-SVN: r271572
Jonathan Wakely [Thu, 23 May 2019 16:01:18 +0000 (17:01 +0100)]
Add missing feature test macro to C++17 status table
* doc/xml/manual/status_cxx2017.xml: Add feature test macro for
P0040R3.
* doc/html/*: Regenerate.
From-SVN: r271571
Bill Schmidt [Thu, 23 May 2019 15:20:33 +0000 (15:20 +0000)]
Add infrastructure to support -mcpu=future to represent a future
architecture level, as yet unnamed.
[gcc]
2019-05-22 Bill Schmidt <wschmidt@linux.ibm.com>
Michael Meissner <meissner@linux.ibm.com>
Segher Boessenkool <segher@kernel.crashing.org>
* config.gcc: Add future cpu.
* config/rs6000/driver-rs6000.c (asm_names): Add future cpu.
* config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): New
#define.
(POWERPC_MASKS): Add OPTION_MASK_FUTURE.
(RS6000_CPU): New instantiation for future cpu.
* config/rs6000/rs6000-opts.h (enum processor_type): Add
PROCESSOR_FUTURE.
* config/rs6000/rs6000-string.c (expand_compare_loop): Treat
PROCESSOR_FUTURE like PROCESSOR_POWER9 for now.
* config/rs6000/rs6000-tables.opt: Regenerate.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Treat
PROCESSOR_FUTURE similarly to PROCESSOR_POWER9 for now.
(rs6000_machine_from_flags): Handle future cpu.
(rs6000_reassociation_width): Treat PROCESSOR_FUTURE like
PROCESSOR_POWER9 for now.
(rs6000_adjust_cost): Likewise.
(rs6000_issue_rate): Likewise.
(rs6000_register_move_cost): Likewise.
(rs6000_opt_mask): Add entry for future.
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Add future cpu.
(MASK_FUTURE): New #define.
* config/rs6000/rs6000.md (define_attr "cpu"): Add future cpu.
* config/rs6000/rs6000.opt (mfuture): New target option.
* doc/invoke.texi (mcpu): Add future cpu.
[gcc/testsuite]
2019-05-22 Bill Schmidt <wschmidt@linux.ibm.com>
* gcc.target/powerpc/cpu-future.c: New test.
Co-Authored-By: Michael Meissner <meissner@linux.ibm.com>
Co-Authored-By: Segher Boessenkool <segher@kernel.crashing.org>
From-SVN: r271567
Jonathan Wakely [Thu, 23 May 2019 14:13:18 +0000 (15:13 +0100)]
Make any_cast compare typeinfo as well as function pointers
It's possible for the function pointer comparison to fail even though
the type is correct, because the function could be defined multiple
times with different addresses when shared libraries are in use.
Retain the function pointer check for the common case where the check
succeeds, but compare typeinfo (if RTTI is enabled) if the first check
fails.
* include/experimental/any (__any_caster): Use RTTI if comparing
addresses fails, to support non-unique addresses in shared libraries.
* include/std/any (__any_caster): Likewise.
From-SVN: r271557
Jonathan Wakely [Thu, 23 May 2019 13:39:06 +0000 (14:39 +0100)]
PR libstdc++/90220 fix experimental::any_cast for non-object types
This corresponds to the fixes done for std::any_cast, but has to be done
without if-constexpr. The dummy specialization of _Manager_internal<_Op>
is used to avoid instantiating the real _Manager_internal<T>::_S_manage
function just to compare its address.
PR libstdc++/90220
* include/experimental/any (__any_caster): Constrain to only be
callable for object types. Use remove_cv_t instead of decay_t.
If the type decays or isn't copy constructible, compare the manager
function to a dummy specialization.
(__any_caster): Add overload constrained for non-object types.
(any::_Manager_internal<_Op>): Add dummy specialization.
* testsuite/experimental/any/misc/any_cast.cc: Test function types
and array types.
From-SVN: r271556
Martin Liska [Thu, 23 May 2019 12:07:09 +0000 (14:07 +0200)]
Do not use tree_to_wide_ref that point to a temporary (PR c++/90587).
2019-05-23 Martin Liska <mliska@suse.cz>
PR c++/90587
* tree-ssa-uninit.c (value_sat_pred_p): The result of &
operation points to a temporary (pointed via tree_to_wide_ref)
that is out of scope after the &.
From-SVN: r271555
Jonathan Wakely [Thu, 23 May 2019 11:47:30 +0000 (12:47 +0100)]
PR c++/90592 add missing word "scope" to __func__ docs
PR c++/90592
* doc/extend.texi (Function Names): Add missing word.
From-SVN: r271554
Richard Biener [Thu, 23 May 2019 11:35:16 +0000 (11:35 +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: r271553
Jakub Jelinek [Thu, 23 May 2019 11:18:41 +0000 (13:18 +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/i386.md (stack_protect_test_<mode>): Use sub instead
of xor.
From-SVN: r271552
Eric Botcazou [Thu, 23 May 2019 10:34:54 +0000 (10:34 +0000)]
* c-ada-spec.c (compare_node): Compare the DECL_UIDs as a last resort.
From-SVN: r271549
Martin Liska [Thu, 23 May 2019 10:12:01 +0000 (12:12 +0200)]
Do not instrument static target_expr for use-after-scope (PR sanitizer/90570).
2019-05-23 Martin Liska <mliska@suse.cz>
PR sanitizer/90570
* gimplify.c (gimplify_target_expr): Skip TREE_STATIC target
expression similarly to gimplify_decl_expr.
2019-05-23 Martin Liska <mliska@suse.cz>
PR sanitizer/90570
* g++.dg/asan/pr90570.C: New test.
From-SVN: r271548
Eric Botcazou [Thu, 23 May 2019 09:48:24 +0000 (09:48 +0000)]
* gnat.dg/opt78.ad[sb]: New test.
From-SVN: r271545
Iain Sandoe [Thu, 23 May 2019 09:23:47 +0000 (09:23 +0000)]
x86, testsuite - update fuse-caller-save tests.
These tests had started to XPASS on pic targets where
the codegen is now as expected.
gcc/testsuite/
2019-05-23 Iain Sandoe <iain@sandoe.co.uk>
PR rtl-optimisation/64895
* gcc.target/i386/fuse-caller-save-rec.c: Remove XFAILs.
* gcc.target/i386/fuse-caller-save.c: Likewise.
* gcc.target/i386/fuse-caller-save-xmm.c: Adjust tests for
PIC cases, remove XFAILs.
From-SVN: r271544
Jonathan Wakely [Thu, 23 May 2019 09:15:42 +0000 (10:15 +0100)]
Add whitespace between operator and operand
* cp-tree.h (CP_AGGREGATE_TYPE_P): Fix whitespace.
From-SVN: r271543
Jonathan Wakely [Thu, 23 May 2019 08:46:45 +0000 (09:46 +0100)]
Remove conflict marker from ChangeLog
From-SVN: r271542
Jonathan Wakely [Thu, 23 May 2019 08:46:40 +0000 (09:46 +0100)]
Remove resolved TODO comment
* init.c (std_placement_new_fn_p): Remove outdated TODO comment that
was resolved by r254694.
From-SVN: r271541
Thomas Schwinge [Thu, 23 May 2019 08:22:56 +0000 (10:22 +0200)]
[PR90510] Adjust 'brig.dg/test/gimple/packed.hsail'
... for r271463 "Fix PR90510, VEC_PERM -> BIT_INSERT folding".
gcc/testsuite/
PR middle-end/90510
* brig.dg/test/gimple/packed.hsail: Adjust.
From-SVN: r271540
Prathamesh Kulkarni [Thu, 23 May 2019 07:49:27 +0000 (07:49 +0000)]
cse.c (cse_dump_path): s/dump_file/f.
2019-05-23 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
* cse.c (cse_dump_path): s/dump_file/f.
From-SVN: r271539
Jakub Jelinek [Thu, 23 May 2019 07:21:34 +0000 (09:21 +0200)]
* g++.dg/cpp2a/is-constant-evaluated8.C: New test.
From-SVN: r271538
Hans-Peter Nilsson [Thu, 23 May 2019 02:18:49 +0000 (02:18 +0000)]
There was a regression for gfortran.dg/fmt_en.f90 for cris-elf that on...
There was a regression for gfortran.dg/fmt_en.f90 for cris-elf
that on inspection was due to it having acquired a truncation
call through the runtime. I updated that and the new tests that
had "Fortran runtime error: required ftruncate or chsize support
not present" messages in gfortran.log, ran past cris-elf and
committed as obvious. See also
<https://gcc.gnu.org/ml/gcc-patches/2008-05/msg00975.html> from
which I copy-pasted most of this message. (Yep, 11 years ago.)
gcc/testsuite:
* gfortran.dg/dec_io_1.f90, gfortran.dg/dtio_1.f90,
gfortran.dg/dtio_12.f90, gfortran.dg/fmt_en.f90,
gfortran.dg/namelist_89.f90: Gate test on effective_target
fd_truncate.
From-SVN: r271536
David Malcolm [Thu, 23 May 2019 00:42:03 +0000 (00:42 +0000)]
Bulletproof -fdiagnostics-format=json against bad locations (PR c++/90462)
PR c++/90462 reports an ICE with -fdiagnostics-format=json when
attempting to serialize a malformed location to JSON.
The compound location_t in question has meaningful "caret" and "start"
locations, but has UNKNOWN_LOCATION for its "finish" location,
leading to a NULL pointer dereference when attempting to build a JSON
string for the filename.
This patch bulletproofs the JSON output so that attempts to write
a JSON object for a location with a NULL file will lead to an object
with no "file" key, and attempts to write a compound location with
UNKNOWN_LOCATION for its start or finish will lead to the corresponding
JSON child object being omitted.
This patch also adds a json::object::get member function, for self-testing
the above.
gcc/ChangeLog:
PR c++/90462
* diagnostic-format-json.cc: Include "selftest.h".
(json_from_expanded_location): Only add "file" key for non-NULL
file strings.
(json_from_location_range): Don't add "start" and "finish"
children if they are UNKNOWN_LOCATION.
(selftest::test_unknown_location): New selftest.
(selftest::test_bad_endpoints): New selftest.
(selftest::diagnostic_format_json_cc_tests): New function.
* json.cc (json::object::get): New function.
(selftest::test_object_get): New selftest.
(selftest::json_cc_tests): Call it.
* json.h (json::object::get): New decl.
* selftest-run-tests.c (selftest::run_tests): Call
selftest::diagnostic_format_json_cc_tests.
* selftest.h (selftest::diagnostic_format_json_cc_tests): New
decl.
gcc/testsuite/ChangeLog:
PR c++/90462
* g++.dg/pr90462.C: New test.
From-SVN: r271535
GCC Administrator [Thu, 23 May 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r271534
Marek Polacek [Wed, 22 May 2019 22:56:00 +0000 (22:56 +0000)]
udlit-char-template-neg.C: Expect the error on a different line.
* g++.dg/cpp1y/udlit-char-template-neg.C: Expect the error on a
different line. Check the column number too.
From-SVN: r271530
Jonathan Wakely [Wed, 22 May 2019 22:14:34 +0000 (23:14 +0100)]
PR libstdc++/90557 fix path assignment that alters source
PR libstdc++/90557
* src/c++17/fs_path.cc (path::_List::operator=(const _List&)): Fix
reversed arguments to uninitialized_copy_n.
* testsuite/27_io/filesystem/path/assign/copy.cc: Check that source
is unchanged by copy assignment.
* testsuite/util/testsuite_fs.h (compare_paths): Use std::equal to
compare path components.
From-SVN: r271527
Kwok Cheung Yeung [Wed, 22 May 2019 22:14:08 +0000 (22:14 +0000)]
Add support for constructors and destuctors on GCN
2019-05-22 Kwok Cheung Yeung <kcy@codesourcery.com>
Andrew Stubbs <amd@codesourcery.com>
gcc/
* config.gcc (gcc_cv_initfini_array): Set for AMD GCN.
* config/gcn/gcn-run.c (init_array_kernel, fini_array_kernel): New.
(kernel): Rename to...
(main_kernel): ... this.
(load_image): Load _init_array and _fini_array kernels.
(run): Add argument for kernel to run.
(main): Run init_array_kernel before main_kernel, and
fini_array_kernel after.
* config/gcn/gcn.c (gcn_handle_amdgpu_hsa_kernel_attribute): Allow
amdgpu_hsa_kernel attribute on functions.
(gcn_disable_constructors): Delete.
(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): Delete.
* config/gcn/crt0.c (size_t): Define.
(_init_array, _fini_array): New.
(__preinit_array_start, __preinit_array_end,
__init_array_start, __init_array_end,
__fini_array_start, __fini_array_end): Declare weak references.
Co-Authored-By: Andrew Stubbs <ams@codesourcery.com>
From-SVN: r271526
Andrew Stubbs [Wed, 22 May 2019 22:14:02 +0000 (22:14 +0000)]
Fix trampoline execution failures on GCN5.
2019-05-22 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn.c (gcn_trampoline_init): Call "sorry" on GCN5.
From-SVN: r271525
Jason Merrill [Wed, 22 May 2019 22:00:14 +0000 (18:00 -0400)]
gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
* gimplify.c (gimplify_cond_expr): Don't check TREE_ADDRESSABLE.
The front end shouldn't produce a GENERIC COND_EXPR of TREE_ADDRESSABLE
type.
From-SVN: r271524
Jason Merrill [Wed, 22 May 2019 21:39:08 +0000 (17:39 -0400)]
PR c++/20408 - unnecessary code for empty struct.
Here initializing the argument from a TARGET_EXPR isn't an empty class
copy even though the type is !TREE_ADDRESSABLE, so we should check
simple_empty_class_p.
* call.c (build_call_a): Use simple_empty_class_p.
From-SVN: r271523
Jonathan Wakely [Wed, 22 May 2019 20:29:39 +0000 (21:29 +0100)]
PR libstdc++/77691 fix resource_adaptor failures due to max_align_t bugs
Remove the hardcoded whitelist of allocators expected to return memory
aligned to alignof(max_align_t), because that doesn't work when the
platform's malloc() and GCC's max_align_t do not agree what the largest
fundamental alignment is. It's also sub-optimal for user-defined
allocators that return memory suitable for any fundamental alignment.
Instead use a hardcoded list of alignments that are definitely supported
by the platform malloc, and use a copy of the allocator rebound to a POD
type with the requested alignment. Only allocate an oversized
buffer to use with std::align for alignments larger than any of the
hardcoded values.
For 32-bit Solaris x86 do not include alignof(max_align_t) in the
hardcoded values.
PR libstdc++/77691
* include/experimental/memory_resource: Add system header pragma.
(__resource_adaptor_common::__guaranteed_alignment): Remove.
(__resource_adaptor_common::_Types)
(__resource_adaptor_common::__new_list)
(__resource_adaptor_common::_New_list)
(__resource_adaptor_common::_Alignments)
(__resource_adaptor_common::_Fund_align_types): New utilities for
creating a list of types with fundamental alignments.
(__resource_adaptor_imp::do_allocate): Call new _M_allocate function.
(__resource_adaptor_imp::do_deallocate): Call new _M_deallocate
function.
(__resource_adaptor_imp::_M_allocate): New function that first tries
to use an allocator rebound to a type with a fundamental alignment.
(__resource_adaptor_imp::_M_deallocate): Likewise for deallocation.
* testsuite/experimental/memory_resource/new_delete_resource.cc:
Adjust expected allocation sizes.
* testsuite/experimental/memory_resource/resource_adaptor.cc: Remove
xfail.
From-SVN: r271522
Jason Merrill [Wed, 22 May 2019 19:48:05 +0000 (15:48 -0400)]
PR c++/86485 - simple_empty_class_p
Yet another tweak that would have fixed this bug: we should treat INIT_EXPR
and MODIFY_EXPR differently for determining whether this is a simple empty
class copy, since a TARGET_EXPR on the RHS is direct initialization if
INIT_EXPR but copy if MODIFY_EXPR.
* cp-gimplify.c (simple_empty_class_p): Also true for MODIFY_EXPR.
From-SVN: r271521
Uros Bizjak [Wed, 22 May 2019 19:15:33 +0000 (21:15 +0200)]
vect-signbitf.c (dg-final): Improve scan-assembler-not string to avoid false matching on 32bit targets.
* gcc.target/i386/vect-signbitf.c (dg-final): Improve
scan-assembler-not string to avoid false matching on 32bit targets.
From-SVN: r271520
H.J. Lu [Wed, 22 May 2019 18:53:37 +0000 (18:53 +0000)]
x86: Don't allocate stack frame nor align stack if not needed
get_frame_size () returns used stack slots during compilation, which
may be optimized out later. This patch does the followings:
1. Add stack_frame_required to machine_function to indicate that the
function needs a stack frame.
2. Change ix86_find_max_used_stack_alignment to set stack_frame_required.
3. Always call ix86_find_max_used_stack_alignment to check if stack
frame is needed.
Tested on i686 and x86-64 with
--with-arch=native --with-cpu=native
Tested on AVX512 machine configured with
--with-arch=native --with-cpu=native
gcc/
PR target/88483
* config/i386/i386-options.c (ix86_init_machine_status): Set
stack_frame_required to true.
* config/i386/i386.c (ix86_get_frame_size): New function.
(ix86_frame_pointer_required): Replace get_frame_size with
ix86_get_frame_size.
(ix86_compute_frame_layout): Likewise.
(ix86_find_max_used_stack_alignment): Changed to void. Set
stack_frame_required.
(ix86_finalize_stack_frame_flags): Always call
ix86_find_max_used_stack_alignment. Replace get_frame_size with
ix86_get_frame_size.
* config/i386/i386.h (machine_function): Add stack_frame_required.
gcc/testsuite/
PR target/88483
* gcc.target/i386/stackalign/pr88483-1.c: New test.
* gcc.target/i386/stackalign/pr88483-2.c: Likewise.
From-SVN: r271517
Uros Bizjak [Wed, 22 May 2019 18:40:58 +0000 (20:40 +0200)]
sse.md (sse_cvtpi2ps): Use TARGET_MMX in insn condition.
* config/i386/sse.md (sse_cvtpi2ps): Use TARGET_MMX in insn condition.
From-SVN: r271515