Cherry Zhang [Wed, 8 May 2019 23:06:52 +0000 (23:06 +0000)]
compiler: avoid copy for string([]byte) conversion used in string comparison
If a string([]byte) conversion is used immediately in a string
comparison, we don't need to copy the backing store of the byte
slice, as the string comparison doesn't hold any reference to
it. Instead, just create a string header from the byte slice and
pass it for comparison.
A new type of expression, String_value_expression, is introduced,
for constructing string headers.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170894
* go.dg/cmpstring.go: New test.
From-SVN: r271021
Ian Lance Taylor [Wed, 8 May 2019 22:07:40 +0000 (22:07 +0000)]
libgo: add Debugging section to README
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176001
From-SVN: r271019
Thomas Koenig [Wed, 8 May 2019 21:55:13 +0000 (21:55 +0000)]
re PR fortran/90351 (-fc-prototypes does not dump prototypes for external procedures)
2019-05-08 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90351
PR fortran/90329
* gfortran.dg/dump-parse-tree.c: Include version.h.
(gfc_dump_external_c_prototypes): New function.
(get_c_type_name): Select "char" as a name for a simple char.
Adjust to handling external functions. Also handle complex.
(write_decl): Add argument bind_c. Adjust for dumping of external
procedures.
(write_proc): Likewise.
(write_interop_decl): Add bind_c argument to call of write_proc.
* gfortran.h: Add prototype for gfc_dump_external_c_prototypes.
* lang.opt: Add -fc-prototypes-external flag.
* parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes.
Call gfc_dump_external_c_prototypes if option is set.
* invoke.texi: Document -fc-prototypes-external.
From-SVN: r271018
Ian Lance Taylor [Wed, 8 May 2019 20:08:32 +0000 (20:08 +0000)]
compiler: generate memmove for non-pointer slice copy
The builtin copy function is lowered to runtime functions
slicecopy, stringslicecopy, or typedslicecopy. The first two are
basically thin wrappers of memmove. Instead of making a runtime
call, we can just use __builtin_memmove. This gives the compiler
backend opportunities for further optimizations.
Move the lowering of builtin copy function to flatten phase for
the ease of rewriting.
Also do this optimization for the copy part of append(s1, s2...).
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170005
From-SVN: r271017
Cherry Zhang [Wed, 8 May 2019 17:40:45 +0000 (17:40 +0000)]
runtime: use builtin memmove directly
We can use the intrinsic memmove directly, without going through
C.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170004
* go-gcc.cc (Gcc_backend::Gcc_backend): Define memmove builtin.
From-SVN: r271016
Nathan Sidwell [Wed, 8 May 2019 17:32:30 +0000 (17:32 +0000)]
[C++ PATCH] Kill DECL_SAVED_FUNCTION_DATA
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00377.html
Kill DECL_SAVED_FUNCTION_DATA .
* cp-tree.h (language_function): Remove x_auto_return_pattern.
(current_function_auto_return_pattern): Delete.
(lang_decl_fn): Replace saved_language_function with
saved_auto_return type.
(DECL_SAVED_FUNCTION_DATA): Delete.
(DECL_SAVED_AUTO_RETURN_TYPE): New.
(FNDECL_USED_AUTO): Correct documentation.
* decl.c (duplicate_decls): Adjust AUTO return handling.
(start_preparsed_function): Replace
current_function_auto_return_pattern with
DECL_SAVED_AUTO_RETURN_TYPE. Remove DECL_SAVED_FUNCTION_DATA
zapping.
(finish_function): Likewise.
(save_function_data): Delete.
(fndecl_declared_return_type): Reimplement.
* mangle.c (write_unqualified_name): Use DECL_SAVED_AUTO_RETURN_TYPE.
* method.c (make_thunk, make_alias_for): Likewise.
* parser.c (cp_parser_jump_statement): Likewise.
* pt.c (do_auto_deduction): Likewise.
* typeck.c (check_return_expr): Likewise.
From-SVN: r271015
Ian Lance Taylor [Wed, 8 May 2019 17:08:18 +0000 (17:08 +0000)]
compiler: remove trailing spaces
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175557
From-SVN: r271014
Jakub Jelinek [Wed, 8 May 2019 17:06:46 +0000 (19:06 +0200)]
re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)
PR c++/59813
PR tree-optimization/89060
* tree-ssa-live.h (live_vars_map): New typedef.
(compute_live_vars, live_vars_at_stmt, destroy_live_vars): Declare.
* tree-ssa-live.c: Include gimple-walk.h and cfganal.h.
(struct compute_live_vars_data): New type.
(compute_live_vars_visit, compute_live_vars_1, compute_live_vars,
live_vars_at_stmt, destroy_live_vars): New functions.
* tree-tailcall.c: Include tree-ssa-live.h.
(live_vars, live_vars_vec): New global variables.
(find_tail_calls): Perform variable life analysis before punting.
(tree_optimize_tail_calls_1): Clean up live_vars and live_vars_vec.
* tree-inline.h (struct copy_body_data): Add eh_landing_pad_dest
member.
* tree-inline.c (add_clobbers_to_eh_landing_pad): Remove BB argument.
Perform variable life analysis to select variables that really need
clobbers added.
(copy_edges_for_bb): Don't call add_clobbers_to_eh_landing_pad here,
instead set id->eh_landing_pad_dest and assert it is the same.
(copy_cfg_body): Call it here if id->eh_landing_pad_dest is non-NULL.
* gcc.dg/tree-ssa/pr89060.c: New test.
From-SVN: r271013
Mihail Ionescu [Wed, 8 May 2019 14:36:15 +0000 (14:36 +0000)]
[arm][PR88167] Fix __builtin_return_address returns invalid address
This patch fixes a problem with the thumb1 prologue code where the link
register could be unconditionally used as a scratch register even if the
return value was still live at the end of the prologue.
Additionally, the patch improves the code generated when we are not
using many low call-saved registers to make use of any unused call
clobbered registers to help with the saving of high registers that
cannot be pushed directly (quite rare in normal code as the register
allocator correctly prefers low registers).
2019-05-08 Mihail Ionescu <mihail.ionescu@arm.com>
Richard Earnshaw <rearnsha@arm.com>
gcc:
PR target/88167
* config/arm/arm.c (thumb1_prologue_unused_call_clobbered_lo_regs): New
function.
(thumb1_epilogue_unused_call_clobbered_lo_regs): New function.
(thumb1_compute_save_core_reg_mask): Don't force a spare work
register if both the epilogue and prologue can use call-clobbered
regs.
(thumb1_unexpanded_epilogue): Use
thumb1_epilogue_unused_call_clobbered_lo_regs. Reverse the logic for
picking temporaries for restoring high regs to match that of the
prologue where possible.
(thumb1_expand_prologue): Add any usable call-clobbered low registers to
the list of work registers. Detect if the return address is still live
at the end of the prologue and avoid using it for a work register if so.
If the return address is not live, add LR to the list of pushable regs
after the first pass.
gcc/testsuite:
PR target/88167
* gcc.target/arm/pr88167-1.c: New test.
* gcc.target/arm/pr88167-2.c: New test.
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>
From-SVN: r271012
François Dumont [Wed, 8 May 2019 13:03:32 +0000 (13:03 +0000)]
re PR libstdc++/90277 (Debug Mode test failures)
2019-05-08 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/90277
* testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
(test01): Reserve for number of insertions to avoid rehash during test.
* testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
(test01): Likewise.
* testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
(test01): Likewise.
(test02): Likewise.
(test03): Likewise.
From-SVN: r271011
Bin Cheng [Wed, 8 May 2019 11:37:45 +0000 (11:37 +0000)]
re PR tree-optimization/90078 (ICE with deep templates caused by overflow)
PR tree-optimization/90078
* tree-ssa-loop-ivopts.c (INFTY): Increase value for infinite cost.
(struct comp_cost): Promote type of members to int64_t.
(infinite_cost): Don't set complexity in initialization.
(comp_cost::operator +,-,+=,-+,/=,*=): Assert when cost computation
overflows to infinite_cost.
(adjust_setup_cost): Promote type of parameter and cost computation
to int64_t.
(struct ainc_cost_data, struct iv_ca): Promote type of member to
int64_t.
(get_scaled_computation_cost_at, determine_iv_cost): Promote type of
cost computation to int64_t.
(determine_group_iv_costs, iv_ca_dump, find_optimal_iv_set): Use
int64_t's format specifier in dump.
gcc/testsuite
* g++.dg/tree-ssa/pr90078.C: New test.
From-SVN: r271008
Bin Cheng [Wed, 8 May 2019 11:24:38 +0000 (11:24 +0000)]
re PR tree-optimization/90240 (ICE in try_improve_iv_set, at tree-ssa-loop-ivopts.c:6694)
PR tree-optimization/90240
* tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Scale cost
with respect to scaling factor pre-computed for each basic block.
(try_improve_iv_set): Return bool if best_cost equals to iv_ca cost.
(find_optimal_iv_set_1): Free iv_ca set if it has infinite_cost.
(COST_SCALING_FACTOR_BOUND, determine_scaling_factor): New.
(tree_ssa_iv_optimize_loop): Call determine_scaling_factor. Extend
live range for array of loop's basic blocks. Cleanup aux field of
loop's basic blocks.
gcc/testsuite
* gfortran.dg/graphite/pr90240.f: New test.
From-SVN: r271007
Hongtao Liu [Wed, 8 May 2019 10:21:40 +0000 (10:21 +0000)]
Enable support for bfloat16 which will be in Future Cooper Lake.
There are 3 instructions for AVX512BF16: VCVTNE2PS2BF16, VCVTNEPS2BF16 and
DPBF16PS instructions, which are Vector Neural Network Instructions
supporting:
- VCVTNE2PS2BF16: Convert Two Packed Single Data to One Packed BF16 Data.
- VCVTNEPS2BF16: Convert Packed Single Data to Packed BF16 Data.
- VDPBF16PS: Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
2019-05-07 Wei Xiao <wei3.xiao@intel.com>
* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BF16_SET
OPTION_MASK_ISA_AVX512BF16_UNSET, OPTION_MASK_ISA2_AVX512BW_UNSET): New.
(OPTION_MASK_ISA2_AVX512F_UNSET): Add OPTION_MASK_ISA_AVX512BF16_UNSET.
(ix86_handle_option): Handle -mavx512bf16.
* config.gcc: Add avx512bf16vlintrin.h and avx512bf16intrin.h
to extra_headers.
* config/i386/avx512bf16vlintrin.h: New.
* config/i386/avx512bf16intrin.h: New.
* config/i386/cpuid.h (bit_AVX512BF16): New.
* config/i386/driver-i386.c (host_detect_local_cpu): Detect BF16.
* config/i386/i386-builtin-types.def: Add new types.
* config/i386/i386-builtin.def: Add new builtins.
* config/i386/i386-c.c (ix86_target_macros_internal): Define
__AVX512BF16__.
* config/i386/i386-option.c (ix86_target_string): Add -mavx512bf16.
(ix86_option_override_internal): Handle BF16.
(ix86_valid_target_attribute_inner_p): Ditto.
* config/i386/i386-expand.c (ix86_expand_args_builtin): Ditto.
* config/i386/i386-builtin.c (enum processor_features): Add
F_AVX512BF16.
(static const _isa_names_table isa_names_table): Ditto.
* config/i386/i386.h (TARGET_AVX512BF16, TARGET_AVX512BF16_P): New.
(PTA_AVX512BF16): Ditto.
* config/i386/i386.opt: Add -mavx512bf16.
* config/i386/immintrin.h: Include avx512bf16intrin.h
and avx512bf16vlintrin.h.
* config/i386/sse.md (avx512f_cvtne2ps2bf16_<mode><mask_name>,
avx512f_cvtneps2bf16_<mode><mask_name>,
avx512f_dpbf16ps_<mode><mask_half_name>): New define_insn patterns.
* config/i386/subst.md (mask_half): Add new subst.
* doc/invoke.texi: Document -mavx512bf16.
2019-05-07 Wei Xiao <wei3.xiao@intel.com>
* gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16-vdpbf16ps-1.c: New test.
* gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1.c: New test.
* gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c: New test.
* gcc.target/i386/builtin_target.c: Handle avx512bf16.
* gcc.target/i386/sse-12.c: Add -mavx512bf16.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.
2019-05-07 Hongtao Liu <hongtao.liu@intel.com>
* config/i386/cpuinfo.c (get_available_features): Detect BF16.
* config/i386/cpuinfo.h (enum processor_features): Add
FEATURE_AVX512BF16.
From-SVN: r271006
Thomas Schwinge [Wed, 8 May 2019 10:01:30 +0000 (12:01 +0200)]
Address compiler diagnostics in libgomp.oacc-c-c++-common/pr87835.c
source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c: In function 'main':
source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c:45: warning: ignoring #pragma loop gang [-Wunknown-pragmas]
45 | #pragma loop gang
|
source-gcc/libgomp/testsuite/libgomp.oacc-c-c++-common/pr87835.c:19:7: warning: unused variable 'b' [-Wunused-variable]
19 | int b[n];
| ^
libgomp/
PR target/87835
* testsuite/libgomp.oacc-c-c++-common/pr87835.c: Update.
From-SVN: r271004
Arnaud Charlet [Wed, 8 May 2019 09:57:15 +0000 (09:57 +0000)]
* standard.ads.h: New file.
From-SVN: r271003
Li Jia He [Wed, 8 May 2019 07:52:26 +0000 (07:52 +0000)]
re PR other/90381 (New test case gcc.dg/tree-ssa/pr88676-2.c fails with its introduction in r270934)
PR other/90381
* gcc.dg/tree-ssa/pr88676-2.c: Add 'target le' option to limit the
test case to run on the little endian machine.
From-SVN: r271002
Jakub Jelinek [Wed, 8 May 2019 07:21:48 +0000 (09:21 +0200)]
re PR tree-optimization/90356 (Missed optimization for variables initialized to 0.0)
PR tree-optimization/90356
* match.pd ((X +/- 0.0) +/- 0.0): Optimize into X +/- 0.0 if possible.
* gcc.dg/tree-ssa/pr90356-1.c: New test.
* gcc.dg/tree-ssa/pr90356-2.c: New test.
* gcc.dg/tree-ssa/pr90356-3.c: New test.
* gcc.dg/tree-ssa/pr90356-4.c: New test.
From-SVN: r271001
Ian Lance Taylor [Wed, 8 May 2019 04:39:19 +0000 (04:39 +0000)]
reflect: correctly handle direct interface typed receiver in Value.call
A direct interface type's value method takes value receiver now.
Don't pass pointer to the method function.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175798
From-SVN: r271000
Ian Lance Taylor [Wed, 8 May 2019 04:29:46 +0000 (04:29 +0000)]
compiler: don't add pointer twice to value method of direct interface type
For a direct interface type T with a value method M, its pointer
type (*T)'s method table includes a stub method of M which takes
a (*T) as the receiver instead of a T. However, for the "typ"
field of the method table entry, we added another layer of
indirection, which makes it appear to take a **T, which is wrong.
This causes problems when using reflect.Type.Method to get the
method. This CL fixes the second, incorrect, indirection.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175837
From-SVN: r270999
GCC Administrator [Wed, 8 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270997
Cherry Zhang [Wed, 8 May 2019 00:14:17 +0000 (00:14 +0000)]
compiler: add an option to emit optimization diagnostics
Add a -fgo-debug-optimization option to emit optimization
diagnostics. This can be used for testing optimizations. Apply
this to the range clear optimizations of maps and arrays.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170002
gcc/go:
* lang.opt (-fgo-debug-optimization): New option.
* go-c.h (struct go_create_gogo_args): Add debug_optimization
field.
* go-lang.c (go_langhook_init): Set debug_optimization field.
* gccgo.texi (Invoking gccgo): Document -fgo-debug-optimization.
gcc/testsuite:
* go.dg/arrayclear.go: New test.
* go.dg/mapclear.go: New test.
From-SVN: r270993
Joseph Myers [Wed, 8 May 2019 00:05:06 +0000 (01:05 +0100)]
Update .po files.
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.
From-SVN: r270991
Jonathan Wakely [Tue, 7 May 2019 23:22:01 +0000 (00:22 +0100)]
Improve API docs for Filesystem TS and Networking TS
* include/experimental/bits/fs_path.h: Improve docs.
* include/experimental/bits/net.h: Fix wrong header name in comment.
Do not document implementation details.
* include/experimental/netfwd: Fix doxygen grouping.
From-SVN: r270990
Jonathan Wakely [Tue, 7 May 2019 22:46:56 +0000 (23:46 +0100)]
Improve API docs for std::pair
* include/bits/stl_pair.h: Improve docs.
* include/std/tuple: Likewise.
From-SVN: r270989
Jonathan Wakely [Tue, 7 May 2019 22:46:53 +0000 (23:46 +0100)]
Improve API docs for <chrono> and <ratio>
* doc/doxygen/doxygroups.cc (std::literals): Add documentation for
inline namespace.
* include/std/chrono: Improve docs.
* include/std/ratio: Do not document implementation details.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Adjust dg-error
line numbers.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.
From-SVN: r270988
Jonathan Wakely [Tue, 7 May 2019 22:46:39 +0000 (23:46 +0100)]
PR libstdc++/89102 implement new common_type rules (P0435R1, P0548R1)
This change ensures that std::common_type<> is a complete type (LWG
2408), and that std::common_type<T>, std::common_type<cv T1, cv T2>, and
std::common_type<T1, T2, R...> will use program-defined specializations
for std::common_type<T1, T2> (LWG 2465).
The implementation of common_type<T1, T2, R...> is changed to use
void_t, and the specializations for duration and time_point are modified
to also use void_t instead of depending on implementation details of
common_type.
PR libstdc++/89102
* doc/xml/manual/intro.xml: Document DR 2408 and 2465 changes.
* include/std/chrono (__duration_common_type_wrapper): Replace with ...
(__duration_common_type): New helper.
(common_type<chrono::duration<R1, P2>, chrono::duration<R2, P2>>): Use
__duration_common_type.
(__timepoint_common_type_wrapper): Replace with ...
(__timepoint_common_type): New helper.
(common_type<chrono::time_point<C, D2>, chrono::time_point<C, D2>>):
Use __time_point_common_type.
* include/std/type_traits (common_type<>): Define, as per LWG 2408.
(__common_type_impl): If either argument is transformed by decay,
use the common_type of the decayed types.
(__common_type_impl<_Tp, _Up, _Tp, _Up>): If the types are already
decayed, use __do_common_type_impl to get the common_type.
(common_type<_Tp>): Use common_type<_Tp, _Tp>.
(__do_member_type_wrapper, __member_type_wrapper)
(__expanded_common_type_wrapper): Remove.
(__common_type_pack, __common_type_fold): New helpers.
(common_type<_Tp, _Up, _Vp...>): Use new helpers instead of
__member_type_wrapper and __expanded_common_type_wrapper.
* testsuite/20_util/common_type/requirements/explicit_instantiation.cc:
Test zero-length template argument list.
* testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc:
Test single argument cases and argument types that should decay.
* testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc:
Adjust expected error.
* testsuite/20_util/duration/literals/range_neg.cc: Use zero for
dg-error lineno.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
From-SVN: r270987
Jason Merrill [Tue, 7 May 2019 22:37:24 +0000 (18:37 -0400)]
PR c++/90171 - reorganize usual_deallocation_fn_p
When fixing 90171 it struck me as undesirable to have so many separate
functions that all needed to know about the definition of a usual
deallocation function. So this patch condenses them into one. I left
destroying_delete_p because it is used by other files as well.
* call.c (struct dealloc_info): New.
(usual_deallocation_fn_p): Take a dealloc_info*.
(aligned_deallocation_fn_p, sized_deallocation_fn_p): Remove.
(build_op_delete_call): Adjust.
From-SVN: r270986
Jason Merrill [Tue, 7 May 2019 22:37:19 +0000 (18:37 -0400)]
PR c++/86485 - -Wmaybe-unused with empty class ?:
* typeck.c (build_static_cast_1): Use cp_build_addr_expr.
For GCC 9 I fixed this bug with a patch to gimplify_cond_expr, but this
function was also doing the wrong thing.
Using build_address does not push the ADDR_EXPR down into the arms of a
COND_EXPR, which we need for proper handling of conversion of an lvalue ?:
to another reference type.
From-SVN: r270985
Jason Merrill [Tue, 7 May 2019 22:37:14 +0000 (18:37 -0400)]
A non-type template parm with a placeholder type is type-dependent.
* pt.c (type_dependent_expression_p): A non-type template parm with
a placeholder type is type-dependent.
From-SVN: r270984
Segher Boessenkool [Tue, 7 May 2019 22:25:05 +0000 (00:25 +0200)]
rs6000: Remove reload leftovers
There are a few things left in the rs6000 port that are unused now
that we do not support old reload anymore. This removes those.
* config/rs6000/rs6000-protos.h (rs6000_legitimize_reload_address_ptr):
Delete declaration.
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Delete.
(rs6000_debug_legitimize_reload_address): Delete.
(rs6000_legitimize_reload_address_ptr): Delete.
(rs6000_option_override_internal): Adjust.
(mem_operand_gpr): Adjust comment.
(legitimate_lo_sum_address_p): Ditto.
(rs6000_legitimize_reload_address): Delete.
(rs6000_debug_legitimize_reload_address): Delete.
* config/rs6000/rs6000.h (LEGITIMIZE_RELOAD_ADDRESS): Delete.
From-SVN: r270983
Kelvin Nilsen [Tue, 7 May 2019 21:40:46 +0000 (21:40 +0000)]
re PR middle-end/89765 (Multiple problems with vec-insert implementation on PowerPC)
gcc/ChangeLog:
2019-05-07 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/89765
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
In handling of ALTIVEC_BUILTIN_VEC_INSERT, use modular arithmetic
to compute vector element selector for both constant and variable
operands.
gcc/testsuite/ChangeLog:
2019-05-07 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/89765
* gcc.target/powerpc/pr89765-mc.c: New test.
* gcc.target/powerpc/vsx-builtin-10c.c: New test.
* gcc.target/powerpc/vsx-builtin-10d.c: New test.
* gcc.target/powerpc/vsx-builtin-11c.c: New test.
* gcc.target/powerpc/vsx-builtin-11d.c: New test.
* gcc.target/powerpc/vsx-builtin-12c.c: New test.
* gcc.target/powerpc/vsx-builtin-12d.c: New test.
* gcc.target/powerpc/vsx-builtin-13c.c: New test.
* gcc.target/powerpc/vsx-builtin-13d.c: New test.
* gcc.target/powerpc/vsx-builtin-14c.c: New test.
* gcc.target/powerpc/vsx-builtin-14d.c: New test.
* gcc.target/powerpc/vsx-builtin-15c.c: New test.
* gcc.target/powerpc/vsx-builtin-15d.c: New test.
* gcc.target/powerpc/vsx-builtin-16c.c: New test.
* gcc.target/powerpc/vsx-builtin-16d.c: New test.
* gcc.target/powerpc/vsx-builtin-17c.c: New test.
* gcc.target/powerpc/vsx-builtin-17d.c: New test.
* gcc.target/powerpc/vsx-builtin-18c.c: New test.
* gcc.target/powerpc/vsx-builtin-18d.c: New test.
* gcc.target/powerpc/vsx-builtin-19c.c: New test.
* gcc.target/powerpc/vsx-builtin-19d.c: New test.
* gcc.target/powerpc/vsx-builtin-20c.c: New test.
* gcc.target/powerpc/vsx-builtin-20d.c: New test.
* gcc.target/powerpc/vsx-builtin-9c.c: New test.
* gcc.target/powerpc/vsx-builtin-9d.c: New test.
From-SVN: r270982
Uros Bizjak [Tue, 7 May 2019 21:36:42 +0000 (23:36 +0200)]
i386.md (cvt_mnemonic): New mode attribute.
* config/i386/i386.md (cvt_mnemonic): New mode attribute.
(ashr<mode>3_cvt): Merge insn pattern from ashrsi3_cvt and
ashrdi3_cvt using SWI48 mode iterator.
From-SVN: r270981
Nathan Sidwell [Tue, 7 May 2019 18:13:57 +0000 (18:13 +0000)]
[libcpp] Reimplement mkdeps data structures
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00323.html
* files.c (_cpp_stack_file): Empty filenames aren't dependencies.
* mkdeps.c (deps_add_dep): Assert not empty.
From-SVN: r270978
Jim Wilson [Tue, 7 May 2019 17:46:51 +0000 (17:46 +0000)]
Resign as IA-64 maintainer.
* MAINTAINERS: Remove myself as IA-64 maintainer.
From-SVN: r270977
Alejandro Martinez [Tue, 7 May 2019 16:34:20 +0000 (16:34 +0000)]
This patch adds support to vectorize sum of abslolute differences (SAD_EXPR)
using SVE.
Given this input code:
int
sum_abs (uint8_t *restrict x, uint8_t *restrict y, int n)
{
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += __builtin_abs (x[i] - y[i]);
}
return sum;
}
The resulting SVE code is:
0000000000000000 <sum_abs>:
0:
7100005f cmp w2, #0x0
4:
5400026d b.le 50 <sum_abs+0x50>
8:
d2800003 mov x3, #0x0 // #0
c:
93407c42 sxtw x2, w2
10:
2538c002 mov z2.b, #0
14:
25221fe0 whilelo p0.b, xzr, x2
18:
2538c023 mov z3.b, #1
1c:
2518e3e1 ptrue p1.b
20:
a4034000 ld1b {z0.b}, p0/z, [x0, x3]
24:
a4034021 ld1b {z1.b}, p0/z, [x1, x3]
28:
0430e3e3 incb x3
2c:
0520c021 sel z1.b, p0, z1.b, z0.b
30:
25221c60 whilelo p0.b, x3, x2
34:
040d0420 uabd z0.b, p1/m, z0.b, z1.b
38:
44830402 udot z2.s, z0.b, z3.b
3c:
54ffff21 b.ne 20 <sum_abs+0x20> // b.any
40:
2598e3e0 ptrue p0.s
44:
04812042 uaddv d2, p0, z2.s
48:
1e260040 fmov w0, s2
4c:
d65f03c0 ret
50:
1e2703e2 fmov s2, wzr
54:
1e260040 fmov w0, s2
58:
d65f03c0 ret
Notice how udot is used inside a fully masked loop.
gcc/Changelog:
2019-05-07 Alejandro Martinez <alejandro.martinezvicente@arm.com>
* config/aarch64/aarch64-sve.md (<su>abd<mode>_3): New define_expand.
(aarch64_<su>abd<mode>_3): Likewise.
(*aarch64_<su>abd<mode>_3): New define_insn.
(<sur>sad<vsi2qi>): New define_expand.
* config/aarch64/iterators.md: Added MAX_OPP attribute.
* tree-vect-loop.c (use_mask_by_cond_expr_p): Add SAD_EXPR.
(build_vect_cond_expr): Likewise.
gcc/testsuite/Changelog:
2019-05-07 Alejandro Martinez <alejandro.martinezvicente@arm.com>
* gcc.target/aarch64/sve/sad_1.c: New test for sum of absolute
differences.
From-SVN: r270975
Uros Bizjak [Tue, 7 May 2019 15:42:42 +0000 (17:42 +0200)]
cfgexpand.c (asm_clobber_reg_is_valid): Reject clobbers outside of accessible_reg_set.
* cfgexpand.c (asm_clobber_reg_is_valid): Reject
clobbers outside of accessible_reg_set.
* config/i386/i386.c (ix86_conditional_register_usage):
Disable register sets by clearing corresponding bits in
accessible_reg_set. Do not set corresponding bits in fixed_regs,
call_used_regs and don't clear corresponding reg_names array members.
testsuite/ChangeLog:
* gcc.target/i386/asm-7.c: New test.
* gcc.target/i386/asm-1.c: Update expected error string.
* gcc.target/i386/pr62120.c: Ditto.
From-SVN: r270955
Jonathan Wakely [Tue, 7 May 2019 15:30:52 +0000 (16:30 +0100)]
Fix incorrect DR numbers in libstdc++ manual
* doc/xml/manual/intro.xml: Fix DR 2537 and DR 2566 confusion.
From-SVN: r270954
Nina Dinka Ranns [Tue, 7 May 2019 15:30:46 +0000 (15:30 +0000)]
Make allocator propagation more consistent for operator+(basic_string) (P1165R1)
2019-05-01 Nina Dinka Ranns <dinka.ranns@gmail.com>
Make allocator propagation more consistent for
operator+(basic_string) (P1165R1)
* include/bits/basic_string.h
(operator+(basic_string&&, basic_string&&): Changed resulting
allocator to always be the one from the first parameter.
* include/bits/basic_string.tcc
(operator+(const _CharT*, const basic_string&)): Changed
resulting allocator to be SOCCC on the second parameter's allocator.
(operator+(_CharT, const basic_string&)): Likewise.
* testsuite/21_strings/basic_string/allocator/char/operator_plus.cc:
New.
* testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc:
New.
From-SVN: r270953
Jonathan Wakely [Tue, 7 May 2019 15:30:40 +0000 (16:30 +0100)]
Improve API docs for std::regex
* include/bits/regex.h: Improve docs.
* include/bits/regex.tcc: Do not document implementation details.
From-SVN: r270952
Jonathan Wakely [Tue, 7 May 2019 15:30:29 +0000 (16:30 +0100)]
Add test for std::hash<std::error_code>
Copied from 19_diagnostics/error_condition/hash.cc added recently.
* testsuite/19_diagnostics/error_code/hash.cc: New test.
From-SVN: r270951
Rainer Orth [Tue, 7 May 2019 15:19:26 +0000 (15:19 +0000)]
Fix make install-gcc-specs with empty GCC_SPECS_FILES
* gcc-interface/Makefile.in (install-gcc-specs): Use foreach.
Honor DESTDIR.
From-SVN: r270947
Richard Biener [Tue, 7 May 2019 13:07:48 +0000 (13:07 +0000)]
tree-vect-stmts.c (vect_is_simple_cond): When vectype is not specified still compute a comp_vectype for invariant compares.
2019-05-07 Richard Biener <rguenther@suse.de>
* tree-vect-stmts.c (vect_is_simple_cond): When vectype is
not specified still compute a comp_vectype for invariant
compares.
From-SVN: r270945
Richard Biener [Tue, 7 May 2019 13:03:19 +0000 (13:03 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)
2019-05-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/90316
* tree-ssa-pre.c (translate_vuse_through_block): When
same_valid is NULL do not bother to search for a virtual
PHI continuation.
(phi_translate_1): When operands changed we cannot keep
the same value-number so do not bother to ask whether
that's possible from translate_vuse_through_block.
From-SVN: r270944
Nathan Sidwell [Tue, 7 May 2019 12:39:59 +0000 (12:39 +0000)]
[libcpp] Reimplement mkdeps data structures
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00293.html
* include/mkdeps.h (deps_write): Add PHONY arg.
(deps_phony_targets): Delete.
* init.c (cpp_finish): Just call deps_write.
* mkdeps.c (struct mkdeps): Add local vector class. Reimplement
vector handling.
(munge): Munge to static buffer.
(apply_vpath): Adjust vector handling.
(deps_init, deps_free): Use new, delete.
(deps_add_target): Do not munge here. Record quoting low water mark.
(deps_add_dep): Do not munge here.
(deps_add_vpath): Adjust vector handling.
(make_write_name): New. Munge on demand here.
(make_write_vec): New.
(deps_phony_targets): Delete.
(make_write): New.
(deps_write): Forward to deps_Write.
(deps_save, deps_restore): Adjust vector handling.
From-SVN: r270943
Martin Liska [Tue, 7 May 2019 12:15:45 +0000 (14:15 +0200)]
Fix bitmap registration of overheads.
2019-05-07 Martin Liska <mliska@suse.cz>
* bitmap.c (bitmap_register): Come up with
alloc_descriptor_max_uid and assign it for
a new bitmap.
(register_overhead): Use get_descriptor as
a descriptor.
(release_overhead): New.
(bitmap_elem_to_freelist): Call it.
(bitmap_elt_clear_from): Likewise.
(bitmap_obstack_free): Likewise.
(bitmap_move): Sensitively release memory.
* bitmap.h (struct GTY): Add alloc_descriptor and padding.
(bitmap_initialize): Initialize alloc_descriptor to zero.
* tree-ssa-pre.c (do_hoist_insertion): Use bitmap_move.
From-SVN: r270942
Richard Biener [Tue, 7 May 2019 11:47:48 +0000 (11:47 +0000)]
tree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever we build a SLP node.
2019-05-07 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_build_slp_tree_2): Bump size whenever
we build a SLP node. Remove max_size and limiting.
(vect_analyze_slp_instance): Record and dump size of the SLP graph.
From-SVN: r270941
Richard Biener [Tue, 7 May 2019 11:17:00 +0000 (11:17 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)
2019-05-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/90316
* tree-ssa-alias.h (get_continuation_for_phi): Take walking
limit by reference.
(walk_non_aliased_vuses): Take walking limit argument.
* tree-ssa-alias.c (maybe_skip_until): Take limit and abort
walking if it is reached instead of just counting.
(get_continuation_for_phi): Likewise.
(walk_non_aliased_vuses): Likewise, instead of leaving counter
limiting to the callback.
* tree-ssa-sccvn.c (vn_reference_lookup_2): Adjust.
(vn_reference_lookup_3): Likewise.
(vn_reference_lookup_pieces): Likewise.
(vn_reference_lookup): Likewise.
* tree-ssa-pre.c (translate_vuse_through_block): Limit walking.
* tree-ssa-scopedtables.c (vuse_eq): Adjust.
(avail_exprs_stack::lookup_avail_expr): Likewise.
From-SVN: r270940
Rainer Orth [Tue, 7 May 2019 10:38:45 +0000 (10:38 +0000)]
Check if Solaris ld supports -z relax=transtls
* m4/druntime/os.m4 (DRUNTIME_OS_LINK_SPEC): Only use -z
relax=transtls if linker supports it.
* configure.ac (enable_libphobos, LIBPHOBOS_SUPPORTED): Move down.
(x86_64-*-solaris2.* | i?86-*-solaris2.*): Only
mark supported with either gld or ld -z relax=transtls.
* configure: Regenerate.
From-SVN: r270939
Jan Hubicka [Tue, 7 May 2019 09:36:05 +0000 (09:36 +0000)]
tree-ssa-alias.c (aliasing_component_refs_p): Continue looking for comparaible types in the second direction even if...
* tree-ssa-alias.c (aliasing_component_refs_p): Continue looking
for comparaible types in the second direction even if first one
hits incomparable type.
From-SVN: r270938
Richard Biener [Tue, 7 May 2019 08:52:33 +0000 (08:52 +0000)]
re PR lto/90369 (error: could not unlink output file)
2019-05-07 Richard Biener <rguenther@suse.de>
PR lto/90369
* lto-wrapper.c (debug_objcopy): Use the original filename
including archive offset for the filename used for -save-temps.
From-SVN: r270937
Rainer Orth [Tue, 7 May 2019 07:44:55 +0000 (07:44 +0000)]
Fix Solaris bootstrap: lto-common.c, lto-dump.c format mismatches
* lto-common.c (lto_file_read): Print section->start as int64_t,
section->len as uint64_t.
* lto-dump.c (symbol_entry::dump): Print sz as uint64_t.
From-SVN: r270935
Li Jia He [Tue, 7 May 2019 05:39:01 +0000 (05:39 +0000)]
Fix a typo in two_value_replacement function
GCC revision 267634 implemented two_value_replacement function.
However, a typo occurred during the parameter check, which caused
us to miss some optimizations.
The intent of the code might be to check that the input parameters
are const int and their difference is one. However, when I read
the code, I found that it is wrong to detect whether an input data
plus one is equal to itself. This could be a typo.
2019-05-07 Li Jia He <helijia@linux.ibm.com>
* tree-ssa-phiopt.c (two_value_replacement): Fix a typo in parameter
detection.
* gcc.dg/tree-ssa/pr37508.c: Add the no-ssa-phiopt option to skip phi
optimization.
* gcc.dg/tree-ssa/pr88676-2.c: New testcase.
From-SVN: r270934
GCC Administrator [Tue, 7 May 2019 00:17:00 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r270933
Segher Boessenkool [Mon, 6 May 2019 23:50:42 +0000 (01:50 +0200)]
rs6000: Renumber the registers
This renumbers the registers.
It moves the VRs to 64..95, right after the GPRs and the FPRS. This
means that the VSRs (which are aliases to the FPRs and the VRs, in
that order) are consecutive now.
It removes MQ, which has been just a stub for ages (it is a leftover
from RIOS, old POWER).
It moves the CR fields to 100..107, which is a bit easier to read
than the 68..75 is was before.
The rest fills the holes. It should be easy to move anything else
after this series, so the exact order isn't very important anymore,
we aren't stuck with it if we dislike it.
Many things still want the GPRs to be at 0..31, and some things want
the FPRs at 32..63. I don't think we'll ever want to change that,
so I left it be.
Small things... It removes DWARF_FRAME_REGISTERS, it used to save
1000 or so words of memory, but it has been just a handful for a
while, and now it is one. Some whitespace fixes. Testing showed one
or two places where register allocation was different (not worse, not
better, just different).
* config/rs6000/rs6000.md (FIRST_ALTIVEC_REGNO, LAST_ALTIVEC_REGNO)
(LR_REGNO, CTR_REGNO, CA_REGNO, ARG_POINTER_REGNUM, CR0_REGNO)
(CR1_REGNO, CR2_REGNO, CR3_REGNO, CR4_REGNO, CR5_REGNO, CR6_REGNO)
(CR7_REGNO, MAX_CR_REGNO, VRSAVE_REGNO, VSCR_REGNO)
(FRAME_POINTER_REGNUM): Change numbering.
* config/rs6000/rs6000.c (rs6000_reg_names): Adjust.
(alt_reg_names): Adjust.
(rs6000_conditional_register_usage): Don't mark hard register 64 as
fixed.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
(DWARF_FRAME_REGISTERS): Delete.
(DWARF2_FRAME_REG_OUT): Fix whitespace.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Adjust.
(REG_ALLOC_ORDER): Adjust.
(FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM): Adjust.
(REG_CLASS_CONTENTS): Adjust.
(RETURN_ADDR_RTX): Change comment.
(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Use ARG_POINTER_REGNUM
instead of 67.
(REGISTER_NAMES): Adjust.
(ADDITIONAL_REGISTER_NAMES): Adjust.
* config/rs6000/darwin.h (REGISTER_NAMES): Adjust.
From-SVN: r270929
Steven G. Kargl [Mon, 6 May 2019 23:24:32 +0000 (23:24 +0000)]
re PR fortran/90290 (-std=f2008 should reject non-constant stop and error stop codes)
2019-05-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90290
* match.c (gfc_match_stopcode): Check F2008 condition on stop code.
2019-05-06 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/90290
* gfortran.dg/pr90290.f90: New test.
From-SVN: r270928
Segher Boessenkool [Mon, 6 May 2019 22:04:19 +0000 (00:04 +0200)]
rs6000: Remove TM regs
We do not need to expose the TM registers in debug info. It isn't
actually useful there, because none of the things that can modify
these registers (other than explicit moves) are marked.
We also do not need the registers for GCC itself internally. This
patch deletes them.
* config/rs6000/rs6000.md (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO):
Delete.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Adjust.
(DWARF_FRAME_REGISTERS): Adjust.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Adjust.
(REG_ALLOC_ORDER): Adjust.
(enum reg_class): Delete SPR_REGS.
(REG_CLASS_NAMES): Delete SPR_REGS.
(REG_CLASS_CONTENTS): Delete SPR_REGS. Adjust for deleted TM regs.
(REGISTER_NAMES): Adjust.
(ADDITIONAL_REGISTER_NAMES): Adjust.
* config/rs6000/darwin.h (REGISTER_NAMES): Adjust.
* config/rs6000/htm.md (htm_mfspr_<mode>, htm_mtspr_<mode>): Adjust.
* config/rs6000/predicates.md (htm_spr_reg_operand): Delete.
* config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Adjust.
(htm_spr_regno): Delete.
(htm_expand_builtin): Adjust: the HTM builtins now have one fewer
argument.
(rs6000_dbx_register_number): Adjust.
From-SVN: r270927
Segher Boessenkool [Mon, 6 May 2019 22:02:24 +0000 (00:02 +0200)]
rs6000: Delete PRE_GCC3_DWARF_FRAME_REGISTERS
We don't need this.
* config/rs6000/rs6000.h (PRE_GCC3_DWARF_FRAME_REGISTERS): Delete.
From-SVN: r270926
Segher Boessenkool [Mon, 6 May 2019 22:01:27 +0000 (00:01 +0200)]
rs6000: rs6000_dbx_register_number for fp/ap/mq
The frame pointer and the argument pointer aren't real registers. MQ
was a register on old POWER. All three are still used as arguments to
rs6000_dbx_register_number during initialisation. If we handle them
explicitly we can do a gcc_unreachable to catch other unexpected
registers.
* config/rs6000/rs6000.c (rs6000_dbx_register_number): Handle
FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and 64 (which was MQ).
From-SVN: r270925
Jakub Jelinek [Mon, 6 May 2019 21:50:14 +0000 (23:50 +0200)]
re PR tree-optimization/88709 (Improve store-merging)
PR tree-optimization/88709
PR tree-optimization/90271
* params.def (PARAM_STORE_MERGING_MAX_SIZE): New parameter.
* gimple-ssa-store-merging.c (encode_tree_to_bitpos): Handle
non-clobber CONSTRUCTORs with no elts. Remove useless tmp_int
variable.
(imm_store_chain_info::coalesce_immediate_stores): Punt if the size
of the store merging group is larger than
PARAM_STORE_MERGING_MAX_SIZE parameter.
(split_group): Add bzero_first argument. If set, always emit first
the first store which must be = {} of the whole area and then for the
rest of the stores consider all zero bytes as paddings.
(imm_store_chain_info::output_merged_store): Check if first store
is = {} of the whole area and if yes, determine which setting of
bzero_first for split_group gives smaller number of stores. Adjust
split_group callers.
(lhs_valid_for_store_merging_p): Allow decls.
(rhs_valid_for_store_merging_p): Allow non-clobber CONTRUCTORs with
no elts.
(pass_store_merging::process_store): Likewise.
* gcc.dg/store_merging_26.c: New test.
* gcc.dg/store_merging_27.c: New test.
* gcc.dg/store_merging_28.c: New test.
* gcc.dg/store_merging_29.c: New test.
From-SVN: r270924
Kelvin Nilsen [Mon, 6 May 2019 17:00:46 +0000 (17:00 +0000)]
re PR target/89424 (__builtin_vec_ext_v1ti (v, i) results in ICE with variable i (RS6000))
gcc/ChangeLog:
2019-05-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/89424
* config/rs6000/rs6000.c (rs6000_expand_vector_extract): Add
handling of V1TImode.
gcc/testsuite/ChangeLog:
2019-05-06 Kelvin Nilsen <kelvin@gcc.gnu.org>
PR target/89424
* gcc.target/powerpc/pr89424-0.c: New test.
* gcc.target/powerpc/vsx-builtin-13a.c: Define macro PR89424 to
enable testing of newly patched capability.
* gcc.target/powerpc/vsx-builtin-13b.c: Likewise.
* gcc.target/powerpc/vsx-builtin-20a.c: Likewise.
* gcc.target/powerpc/vsx-builtin-20b.c: Likewise.
From-SVN: r270918
Marek Polacek [Mon, 6 May 2019 16:56:39 +0000 (16:56 +0000)]
PR c++/90265 - ICE with generic lambda.
* pt.c (tsubst_copy_and_build): Use a dedicated variable for the last
element in the vector.
* g++.dg/cpp1y/lambda-generic-90265.C: New test.
From-SVN: r270917
Uros Bizjak [Mon, 6 May 2019 14:58:57 +0000 (16:58 +0200)]
re PR target/89221 (--enable-frame-pointer does not work as intended)
PR target/89221
* config.gcc (i[34567]86-*-*, x86_64-*-*): Move tests for enable_cld
and enable_frame_pointer ...
* configure.ac: ... here. Update help strings for
--enable-frame-pointer.
* configure: Regenerate.
* config/i386/i386-options.c (ix86_option_override_internal): Remove
USE_X86_64_FRAME_POINTER define, use USE_IX86_FRAME_POINTER instead.
* config/i386/sol2.h (USE_IX86_FRAME_POINTER): Remove.
(USE_X86_64_FRAME_POINTER): Ditto.
From-SVN: r270914
Martin Liska [Mon, 6 May 2019 14:03:27 +0000 (16:03 +0200)]
Append to target_gtfiles in order to fix Darwin bootstrap.
2019-05-06 Martin Liska <mliska@suse.cz>
* config.gcc: Append to target_gtfiles and fix indentation.
From-SVN: r270913
Richard Biener [Mon, 6 May 2019 13:40:00 +0000 (13:40 +0000)]
re PR tree-optimization/90358 (526.blender_r train run does not finish after r270847 on znver1)
2019-05-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/90358
* tree-vect-stmts.c (get_group_load_store_type): Properly
detect unused upper half of load.
(vectorizable_load): Likewise.
* gcc.target/i386/pr90358.c: New testcase.
From-SVN: r270911
Li Jia He [Mon, 6 May 2019 13:17:20 +0000 (13:17 +0000)]
This reverts commit r270894, as new testcase fails on arm and aarch64, I am sorry for this.
From-SVN: r270910
Richard Biener [Mon, 6 May 2019 12:43:30 +0000 (12:43 +0000)]
re PR tree-optimization/88828 (Inefficient update of the first element of vector registers)
2019-05-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/88828
* tree-ssa-forwprop.c (get_bit_field_ref_def): Split out from...
(simplify_vector_constructor): ...here. Handle constants in
the constructor.
* gcc.target/i386/pr88828-0.c: New testcase.
From-SVN: r270908
Richard Biener [Mon, 6 May 2019 12:38:35 +0000 (12:38 +0000)]
re PR tree-optimization/90328 (Wrong loop distribution with aliasing)
2019-05-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/90328
* tree-data-ref.h (dr_may_alias_p): Pass in the actual loop nest.
* tree-data-ref.c (dr_may_alias_p): Check whether the clique
is valid in the loop nest before using it.
(initialize_data_dependence_relation): Adjust.
* graphite-scop-detection.c (build_alias_set): Pass the SCOP enclosing
loop as loop-nest to dr_may_alias_p.
* gcc.dg/torture/pr90328.c: New testcase.
From-SVN: r270906
Nathan Sidwell [Mon, 6 May 2019 11:34:47 +0000 (11:34 +0000)]
[libcpp] struct deps renaming
https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00199.html
libcpp/
* include/mkdeps.h: Rename struct deps to struct mkdeps.
* mkdeps.c: Likewise.
* include/cpplib.h (cpp_get_deps): Rename return type..
* directives.c (cpp_get_deps): Likewise.
* internal.h (struct cpp_reader): Rename deps field type.
gcc/c-family/
* c-opts.c (handle_defered_opts): Rename struct deps to struc mkdeps.
From-SVN: r270905
Richard Biener [Mon, 6 May 2019 09:38:09 +0000 (09:38 +0000)]
dwarf2out.c (mem_loc_descriptor): Initialize int_mode.
2019-05-06 Richard Biener <rguenther@suse.de>
* dwarf2out.c (mem_loc_descriptor): Initialize int_mode.
From-SVN: r270903
Richard Biener [Mon, 6 May 2019 08:54:40 +0000 (08:54 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)
2019-05-06 Richard Biener <rguenther@suse.de>
PR tree-optimization/90316
* tree-ssa-alias.c (maybe_skip_until): Pass in target BB,
compute target on demand.
(get_continuation_for_phi): Remove code walking stmts to
get to a target virtual operand which could end up being
quadratic.
From-SVN: r270902
Thomas Schwinge [Mon, 6 May 2019 08:49:55 +0000 (10:49 +0200)]
Clean up libgomp GCC 5 legacy support
libgomp/
* oacc-parallel.c: Add comments to legacy entry points (GCC 5).
From-SVN: r270901
Richard Biener [Mon, 6 May 2019 07:38:26 +0000 (07:38 +0000)]
re PR testsuite/90331 (New test case gcc.dg/pr87314-1.c fails)
2019-05-06 Richard Biener <rguenther@suse.de>
PR testsuite/90331
* gcc.dg/pr87314-1.c: Align the substring to open up
string merging for targets aligning strings to 8 bytes.
From-SVN: r270900
Martin Liska [Mon, 6 May 2019 07:35:59 +0000 (09:35 +0200)]
Error only when a non-default -mabi is used with sanitizers (PR sanitizer/90312).
2019-05-06 Martin Liska <mliska@suse.cz>
PR sanitizer/90312
* config/i386/i386-options.c (ix86_option_override_internal): Error only
when -mabi is selected to a non-default version.
2019-05-06 Martin Liska <mliska@suse.cz>
PR sanitizer/90312
* gcc.dg/asan/pr87930.c: Run the test only on *linux or *gnu
systems.
* gcc.dg/tsan/pr88017.c: Likewise.
From-SVN: r270899
Martin Liska [Mon, 6 May 2019 07:23:35 +0000 (09:23 +0200)]
Fix GNU coding style in lto-common.c.
2019-05-06 Martin Liska <mliska@suse.cz>
* lto-common.c: Update coding style.
* lto.c (materialize_cgraph): Likewise.
From-SVN: r270898
Hrishikesh Kulkarni [Mon, 6 May 2019 07:23:25 +0000 (07:23 +0000)]
Add lto-dump tool.
2019-05-06 Hrishikesh Kulkarni <hrishikeshparag@gmail.com>
Martin Liska <mliska@suse.cz>
* Makefile.in: Add lto-dump.texi.
* cgraph.h: Add new functions get_visibility_string and
get_symtab_type_string.
* doc/gcc.texi: Include lto-dump section.
* doc/lto-dump.texi: New file.
* dumpfile.c (dump_switch_p_1): Use parse_dump_option.
(parse_dump_option): Factor out this function.
* dumpfile.h (enum dump_flag): Add new value TDF_ERROR.
(parse_dump_option): Export the function.
* symtab.c (symtab_node::get_visibility_string): New function.
(symtab_node::get_symtab_type_string): Likewise.
2019-05-06 Hrishikesh Kulkarni <hrishikeshparag@gmail.com>
Martin Liska <mliska@suse.cz>
* Make-lang.in: Add lto_dump-related definition.
* config-lang.in: Likewise.
* lang.opt: Add new language LTODump and options related
to LTO dump tool.
* lto-common.c (lto_read_decls): Support type statistics dump.
(lto_file_read): Likewise for object files.
* lto-dump.c: New file.
* lto-lang.c (lto_option_lang_mask): Move from ..
* lto.c (lto_option_lang_mask): .. here.
* lto.h (lto_option_lang_mask): New declaration.
Co-Authored-By: Martin Liska <mliska@suse.cz>
From-SVN: r270897
Martin Liska [Mon, 6 May 2019 07:23:03 +0000 (09:23 +0200)]
Split part of functionality from lto.c to lto-common.c.
2019-05-06 Martin Liska <mliska@suse.cz>
Hrishikesh Kulkarni <hrishikeshparag@gmail.com>
* Make-lang.in: Add lto-common.o.
* config-lang.in: Likewise for gtfiles.
* lto-common.c: New file.
* lto-common.h: New file.
* lto-lang.c: Include lto-common.h.
* lto.c: Move most of the functionality
into lto-common.c file.
Co-Authored-By: Hrishikesh Kulkarni <hrishikeshparag@gmail.com>
From-SVN: r270896
Martin Liska [Mon, 6 May 2019 07:18:26 +0000 (09:18 +0200)]
Split i386.c.
2019-05-06 Martin Liska <mliska@suse.cz>
* config/i386/i386-builtins.c: New file.
* config/i386/i386-builtins.h: New file.
* config/i386/i386-expand.c: New file.
* config/i386/i386-expand.h: New file.
* config/i386/i386-features.c: New file.
* config/i386/i386-features.h: New file.
* config/i386/i386-options.c: New file.
* config/i386/i386-options.h: New file.
* config.gcc: Add new files into extra_objs and
target_gtfiles.
* config/i386/i386.c: Split content of the file
into newly introduced files.
* config/i386/i386.h: Declare common variables
and macros.
* config/i386/t-i386: Define dependencies for new files.
From-SVN: r270895
Li Jia He [Mon, 6 May 2019 06:00:03 +0000 (06:00 +0000)]
Fix a typo in two_value_replacement function
GCC revision 267634 implemented two_value_replacement function.
However, a typo occurred during the parameter check, which caused
us to miss some optimizations.
The intent of the code might be to check that the input parameters
are const int and their difference is one. However, when I read
the code, I found that it is wrong to detect whether an input data
plus one is equal to itself. This could be a typo.
2019-05-06 Li Jia He <helijia@linux.ibm.com>
* tree-ssa-phiopt.c (two_value_replacement): Fix a typo in parameter
detection.
* gcc.dg/tree-ssa/pr37508.c: Add the no-ssa-phiopt option to skip phi
optimization.
* gcc.dg/tree-ssa/pr88676-2.c: New testcase.
From-SVN: r270894
François Dumont [Mon, 6 May 2019 05:33:23 +0000 (05:33 +0000)]
printers.py (add_one_template_type_printer): Add type printer for container types in std::__debug namespace.
2019-05-06 François Dumont <fdumont@gcc.gnu.org>
* python/libstdcxx/v6/printers.py (add_one_template_type_printer):
Add type printer for container types in std::__debug namespace.
* testsuite/lib/gdb-test.exp (whatis-regexp-test): New.
(gdb-tests): Use distinct parameters for the type of test and use of
regex.
(gdb-test): Check for regex test even if 'whatis' test.
* testsuite/libstdc++-prettyprinters/80276.cc: Adapt for _GLIBCXX_DEBUG
mode.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.
From-SVN: r270893
GCC Administrator [Mon, 6 May 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270892
Thomas Koenig [Sun, 5 May 2019 13:53:24 +0000 (13:53 +0000)]
re PR fortran/90344 (small code that compiles and runs in 7.3.0 but not 7.4.1)
2019-05-05 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90344
* gfortran.dg/pr90344.f90: New test.
From-SVN: r270882
GCC Administrator [Sun, 5 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270881
Jonathan Wakely [Sat, 4 May 2019 15:52:52 +0000 (16:52 +0100)]
Fix reference to wrong class in comment
* include/std/system_error (error_category): Fix comment.
From-SVN: r270877
Jonathan Wakely [Sat, 4 May 2019 14:35:33 +0000 (15:35 +0100)]
PR libstdc++/90299 make filesystem::absolute overloads consistent
In this implementation it is an error to pass the empty path to absolute,
because the empty path doesn't represent any file in the filesystem so
the function cannot meet its postcondition.
Currently the absolute(const path&, error_code&) overload reports an
error for the empty path, but using errc::no_such_file_or_directory, and
the other overload does not report an error. This patch makes them
consistntly report an errc::invalid_argument error for the empty path.
PR libstdc++/90299
* src/c++17/fs_ops.cc (absolute(const path&)): Report an error if the
argument is an empty path.
(absolute(const path&, error_code&)): Use invalid_argument as error
code instead of no_such_file_or_directory.
* testsuite/27_io/filesystem/operations/absolute.cc: Check handling
of non-existent paths and empty paths with both overloads of absolute.
From-SVN: r270874
Jonathan Wakely [Sat, 4 May 2019 14:35:29 +0000 (15:35 +0100)]
Improve API docs for <system_error> header
* include/std/system_error (error_category, error_code)
(error_condition): Improve docs.
* libsupc++/exception: Add missing @addtogroup Doxygen command.
* libsupc++/exception_ptr.h (exception_ptr): Link equality operators
to class documentation. Suppress documentation for implementation
details.
* libsupc++/nested_exception.h (throw_with_nested, rethrow_if_nested):
Suppress documentation for implementation details.
From-SVN: r270873
Jonathan Wakely [Sat, 4 May 2019 14:35:25 +0000 (15:35 +0100)]
Fix std::hash<std::error_condition>
The hash value should be based on the identity (i.e. address) of the
error_category member, not its object representation (i.e. underlying
bytes).
* include/std/system_error (error_code): Remove friend declaration
for hash<error_code>.
(hash<error_code>::operator()): Use public member functions to access
value and category.
(hash<error_condition>::operator()): Use address of category, not
its object representation.
* src/c++11/compatibility-c++0x.cc (hash<error_code>::operator()):
Use public member functions to access value and category.
* testsuite/19_diagnostics/error_condition/hash.cc: New test.
From-SVN: r270872
Gerald Pfeifer [Sat, 4 May 2019 13:28:49 +0000 (13:28 +0000)]
crontab: Snapshots from trunk are now GCC 10 related.
* crontab: Snapshots from trunk are now GCC 10 related.
Add GCC 9 snapshots from the respective branch.
From-SVN: r270871
François Dumont [Sat, 4 May 2019 07:41:39 +0000 (07:41 +0000)]
Add missing PR libstdc++/90277 reference.
From-SVN: r270870
Roland Illig [Sat, 4 May 2019 07:38:52 +0000 (07:38 +0000)]
Add myself to MAINTAINERS.
2019-05-04 Roland Illig <roland.illig@gmx.de>
* MAINTAINERS (Write After Approval): Add myself.
From-SVN: r270869
François Dumont [Sat, 4 May 2019 07:38:46 +0000 (07:38 +0000)]
hashtable.h (_Hashtable<>::rehash): Review comment.
2019-05-04 François Dumont <fdumont@gcc.gnu.org>
* include/bits/hashtable.h (_Hashtable<>::rehash): Review comment.
* include/bits/hashtable_policy.h
(_Prime_rehash_policy::_M_bkt_for_elements): Use __builtin_ceill.
(_Power2_rehash_policy::_M_bkt_for_elements): Likewise.
(_Power2_rehash_policy::_M_next_bkt): Enforce returning a result not
smaller than input value rather than always greater. Preserve
_M_next_resize if called with 0 input. Use __builtin_floorl.
(_Power2_rehash_policy::_M_need_rehash): Rehash only if number of
elements + number of insertions is greater than _M_next_resize. Start
with 11 buckets if not told otherwise. Use __builtin_floorl.
(_Rehash_base<>::reserve): Use rehash policy _M_bkt_for_elements.
* src/c++11/hashtable_c++0x.cc (_Prime_rehash_policy::_M_next_bkt):
Preserve _M_next_resize if called with 0 input. Use __builtin_floorl.
(_Prime_rehash_policy::_M_need_rehash): Start with 11 buckets if not
told otherwise. Use __builtin_floorl.
* testsuite/23_containers/unordered_set/hash_policy/71181.cc: Adapt test
to also validate _Power2_rehash_policy.
* testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc:
Adapt.
From-SVN: r270868
GCC Administrator [Sat, 4 May 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r270867
Ian Lance Taylor [Fri, 3 May 2019 21:45:35 +0000 (21:45 +0000)]
compiler: recognize and optimize array range clear
Recognize
for i := range a { a[i] = zero }
for array or slice a, and rewrite it to call memclr, as the gc
compiler does.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/169398
From-SVN: r270862
Jonathan Wakely [Fri, 3 May 2019 19:25:05 +0000 (20:25 +0100)]
Fix new testcase to not require std::copysign
Use __builtin_copysign{,f,l} when std::copysign isn't available.
PR libstdc++/61761
* testsuite/26_numerics/complex/proj.cc: Don't assume <cmath> defines
std::copysign.
From-SVN: r270859
Jonathan Wakely [Fri, 3 May 2019 19:13:31 +0000 (20:13 +0100)]
Avoid -Woverflow warning in __numeric_limits_integer
This is the same fix as was done for std::numeric_limits in r183905.
PR libstdc++/52119
* include/ext/numeric_traits.h (__glibcxx_min): Avoid integer
overflow warning with -Wpedantic -Wsystem-headers.
From-SVN: r270858
Ian Lance Taylor [Fri, 3 May 2019 17:15:54 +0000 (17:15 +0000)]
os/user: disable TestGroupIds for AIX
The corresponding Go Toolchain patch is CL 164039
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/175079
From-SVN: r270857
Richard Earnshaw [Fri, 3 May 2019 13:45:59 +0000 (13:45 +0000)]
[arm] PR target/89400 fix thumb1 unaligned access expansion
Armv6 has support for unaligned accesses to memory. However, the
thumb1 code patterns were trying to use the 32-bit code constraints.
One failure mode from this was that the patterns are designed to be
compatible with conditional execution and this was then causing an
assert in the compiler.
The unaligned_loadhis pattern is only used for expanding extv, which
in turn is only enabled for systems supporting thumb2. Given that
there is no simple expansion for a thumb1 sign-extending load (the
instruction has no immediate offset form and requires two registers in
the address) it seems simpler to just disable this for thumb1.
Fixed thusly:
PR target/89400
* config/arm/arm.md (unaligned_loadsi): Add variant for thumb1.
Restrict 'all' variant to 32-bit configurations.
(unaligned_loadhiu): Likewise.
(unaligned_storehi): Likewise.
(unaligned_storesi): Likewise.
(unaligned_loadhis): Disable when compiling for thumb1.
From-SVN: r270853
Marc Glisse [Fri, 3 May 2019 13:41:36 +0000 (15:41 +0200)]
Let ldist ignore clobbers
2019-05-03 Marc Glisse <marc.glisse@inria.fr>
PR tree-optimization/90269
gcc/
* tree-loop-distribution.c (find_seed_stmts_for_distribution):
Ignore clobbers.
gcc/testsuite/
* g++.dg/tree-ssa/ldist-1.C: New file.
From-SVN: r270852
Martin Liska [Fri, 3 May 2019 12:37:22 +0000 (14:37 +0200)]
Come up with is_empty for hash_{table,map,set}.
2019-05-03 Martin Liska <mliska@suse.cz>
* hash-map.h: Add is_empty function.
* hash-set.h: Likewise.
* hash-table.h: Likewise.
* dwarf2out.c (dwarf2out_finish): Use is_empty instead of
elements () == 0 (and similar usages).
* gimple-ssa-store-merging.c (pass_store_merging::terminate_and_process_all_chains): Likewise.
* gimplify.c (gimplify_bind_expr): Likewise.
(gimplify_switch_expr): Likewise.
* hash-map-tests.c (test_map_of_strings_to_int): Likewise.
* ipa-icf.c (sem_item_optimizer::remove_symtab_node): Likewise.
* postreload-gcse.c (dump_hash_table): Likewise.
(gcse_after_reload_main): Likewise.
* predict.c (combine_predictions_for_bb): Likewise.
* tree-parloops.c (reduction_phi): Likewise.
(separate_decls_in_region): Likewise.
(transform_to_exit_first_loop): Likewise.
(gen_parallel_loop): Likewise.
(gather_scalar_reductions): Likewise.
(try_create_reduction_list): Likewise.
* var-tracking.c (dump_vars): Likewise.
(emit_notes_for_changes): Likewise.
(vt_emit_notes): Likewise.
2019-05-03 Martin Liska <mliska@suse.cz>
* call.c (build_aggr_conv): Use is_empty instead of
elements () == 0 (and similar usages).
* parser.c (cp_parser_lambda_introducer): Likewise.
From-SVN: r270851
Richard Biener [Fri, 3 May 2019 11:21:18 +0000 (11:21 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)
2019-05-03 Richard Biener <rguenther@suse.de>
PR tree-optimization/90316
* tree-ssa-pre.c (pass_pre::execute): Re-compute DOM fast queries
before running VN.
From-SVN: r270848
Richard Biener [Fri, 3 May 2019 10:47:21 +0000 (10:47 +0000)]
tree-vect-stmts.c (get_group_load_store_type): Avoid peeling for gaps by loading only lower halves of vectors if possible.
2019-05-03 Richard Biener <rguenther@suse.de>
* tree-vect-stmts.c (get_group_load_store_type): Avoid
peeling for gaps by loading only lower halves of vectors
if possible.
(vectorizable_load): Likewise.
* gcc.dg/vect/slp-reduc-sad-2.c: New testcase.
From-SVN: r270847