Commit Graph

165917 Commits

Author SHA1 Message Date
Bin Cheng 4469188ce7 auto-profile.c (afdo_indirect_call): Skip generating histogram value if we can't find cgraph_node for then...
* auto-profile.c (afdo_indirect_call): Skip generating histogram
	value if we can't find cgraph_node for then indirected callee.  Save
	profile_id of the cgraph_node in histogram value's first counter.
	* value-prof.c (gimple_value_profile_transformations): Don't skip
	for flag_auto_profile.

From-SVN: r267249
2018-12-19 02:25:48 +00:00
GCC Administrator 0fb778bcda Daily bump.
From-SVN: r267248
2018-12-19 00:16:23 +00:00
Jakub Jelinek 4a7e3b42b2 re PR rtl-optimization/87759 (ICE in lra_assign, at lra-assigns.c:1624, or ICE: Maximum number of LRA assignment passes is achieved (30), or compile-time hog)
PR rtl-optimization/87759
	* gcc.target/i386/pr87759.c: Require int128 effective target.

From-SVN: r267245
2018-12-18 22:48:59 +01:00
Vladimir Makarov 003cd04c4b re PR rtl-optimization/87759 (ICE in lra_assign, at lra-assigns.c:1624, or ICE: Maximum number of LRA assignment passes is achieved (30), or compile-time hog)
2018-12-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/87759
	* lra-assigns.c (lra_split_hard_reg_for): Recalculate
	non_reload_pseudos.

2018-12-18  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/87759
	* gcc.target/i386/pr87759.c: New.

From-SVN: r267244
2018-12-18 21:20:16 +00:00
Jakub Jelinek dc5b05a075 re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")
PR target/88464
	* config/i386/i386-builtin-types.def
	(VOID_FTYPE_PDOUBLE_QI_V8SI_V4DF_INT,
	VOID_FTYPE_PFLOAT_QI_V4DI_V8SF_INT,
	VOID_FTYPE_PLONGLONG_QI_V8SI_V4DI_INT,
	VOID_FTYPE_PINT_QI_V4DI_V8SI_INT,
	VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT,
	VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT,
	VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT,
	VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types.
	* config/i386/i386.c (enum ix86_builtins): Add
	IX86_BUILTIN_SCATTERALTSIV4DF, IX86_BUILTIN_SCATTERALTDIV8SF,
	IX86_BUILTIN_SCATTERALTSIV4DI, IX86_BUILTIN_SCATTERALTDIV8SI,
	IX86_BUILTIN_SCATTERALTSIV2DF, IX86_BUILTIN_SCATTERALTDIV4SF,
	IX86_BUILTIN_SCATTERALTSIV2DI and IX86_BUILTIN_SCATTERALTDIV4SI.
	(ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*,
	IX86_BUILTIN_GATHER3ALT* and IX86_BUILTIN_SCATTERALT* builtins to
	match the IX86_BUILTIN codes.  Build 	IX86_BUILTIN_SCATTERALTSIV4DF,
	IX86_BUILTIN_SCATTERALTDIV8SF, IX86_BUILTIN_SCATTERALTSIV4DI,
	IX86_BUILTIN_SCATTERALTDIV8SI, IX86_BUILTIN_SCATTERALTSIV2DF,
	IX86_BUILTIN_SCATTERALTDIV4SF, IX86_BUILTIN_SCATTERALTSIV2DI and
	IX86_BUILTIN_SCATTERALTDIV4SI decls.
	(ix86_vectorize_builtin_scatter): Expand those new builtins.

	* gcc.target/i386/avx512f-pr88464-5.c: New test.
	* gcc.target/i386/avx512f-pr88464-6.c: New test.
	* gcc.target/i386/avx512f-pr88464-7.c: New test.
	* gcc.target/i386/avx512f-pr88464-8.c: New test.
	* gcc.target/i386/avx512vl-pr88464-5.c: New test.
	* gcc.target/i386/avx512vl-pr88464-6.c: New test.
	* gcc.target/i386/avx512vl-pr88464-7.c: New test.
	* gcc.target/i386/avx512vl-pr88464-8.c: New test.
	* gcc.target/i386/avx512vl-pr88464-9.c: New test.
	* gcc.target/i386/avx512vl-pr88464-10.c: New test.
	* gcc.target/i386/avx512vl-pr88464-11.c: New test.
	* gcc.target/i386/avx512vl-pr88464-12.c: New test.
	* gcc.target/i386/avx512vl-pr88464-13.c: New test.
	* gcc.target/i386/avx512vl-pr88464-14.c: New test.
	* gcc.target/i386/avx512vl-pr88464-15.c: New test.
	* gcc.target/i386/avx512vl-pr88464-16.c: New test.

From-SVN: r267239
2018-12-18 19:41:26 +01:00
Jonathan Wakely 4894e316a8 LWG 3171: restore stream insertion for filesystem::directory_entry
* include/bits/fs_dir.h (operator<<): Overload for directory_entry,
	as per LWG 3171.
	* testsuite/27_io/filesystem/directory_entry/lwg3171.cc: New test.

From-SVN: r267238
2018-12-18 16:57:36 +00:00
Jonathan Wakely fb601354e1 Fix previous commit to move instead of copying
* src/filesystem/std-dir.cc (filesystem::_Dir::advance): Move new
	path instead of copying.

From-SVN: r267237
2018-12-18 16:38:13 +00:00
Jonathan Wakely 8d53154813 Micro-optimization to avoid creating temporary path
Now that path::operator/=(basic_string_view<value_type>) works directly
from the string argument, instead of constructing a temporary path from
the string, it's potentially more efficient to do 'path(x) /= s' instead
of 'x / s'. This changes the only relevant place in the library.

	* src/filesystem/std-dir.cc (filesystem::_Dir::advance): Append
	string to lvalue to avoid creating temporary path.

From-SVN: r267236
2018-12-18 15:52:37 +00:00
Jonathan Wakely 36313a6bce LWG 2936: update path::compare logic and optimize string comparisons
The resolution for LWG 2936 defines the comparison more precisely, which
this patch implements. The patch also defines comparisons with strings
to work without constructing a temporary path object (so avoids any
memory allocations).

	* include/bits/fs_path.h (path::compare(const string_type&))
	(path::compare(const value_type*)): Add noexcept and construct a
	string view to compare to instead of a path.
	(path::compare(basic_string_view<value_type>)): Add noexcept. Remove
	inline definition.
	* src/filesystem/std-path.cc (path::_Parser): Track last type read
	from input.
	(path::_Parser::next()): Return a final empty component when the
	input ends in a non-root directory separator.
	(path::_M_append(basic_string_view<value_type>)): Remove special cases
	for trailing non-root directory separator.
	(path::_M_concat(basic_string_view<value_type>)): Likewise.
	(path::compare(const path&)): Implement LWG 2936.
	(path::compare(basic_string_view<value_type>)): Define in terms of
	components returned by parser, consistent with LWG 2936.
	* testsuite/27_io/filesystem/path/compare/lwg2936.cc: New.
	* testsuite/27_io/filesystem/path/compare/path.cc: Test more cases.
	* testsuite/27_io/filesystem/path/compare/strings.cc: Likewise.

From-SVN: r267235
2018-12-18 15:52:33 +00:00
Jonathan Wakely 49cefcf3f0 LWG 3040: define starts_with/ends_with as proposed
* include/std/string_view [__cplusplus > 201703L]
	(basic_string_view::starts_with(basic_string_view)): Implement
	proposed resolution of LWG 3040 to avoid redundant length check.
	(basic_string_view::starts_with(_CharT)): Implement proposed
	resolution of LWG 3040 to check at most one character.
	(basic_string_view::ends_with(_CharT)): Likewise.

From-SVN: r267234
2018-12-18 15:34:43 +00:00
Bill Schmidt 34a9bcaf8b extend.texi (PowerPC Altivec/VSX Built-in Functions): Describe when a typedef name can be used as the type specifier for a vector type...
2018-12-18  Bill Schmidt  <wschmidt@linux.ibm.com>

	* doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
	Describe when a typedef name can be used as the type specifier for
	a vector type, and when it cannot.

From-SVN: r267232
2018-12-18 13:46:10 +00:00
Kyrylo Tkachov 68d459d955 [testsuite] Enable vect_usad_char effective target for non-SVE aarch64
In GCC 9 the aarch64 port learned how to do V16QImode SAD operations on signed and unsigned chars.
But I had missed enabling the effective target for that.
This patch enables that target for non-SVE aarch64.
Two new tests now PASS on aarch64:
gcc.dg/vect/slp-reduc-sad.c
gcc.dg/vect/vect-reduc-sad.c

	* lib/target-supports.exp (check_effective_target_vect_usad_char):
	Add non-SVE aarch64 to supported list.

From-SVN: r267230
2018-12-18 12:55:44 +00:00
Jozef Lawrynowicz e7b78f7226 msp430.h: Define TARGET_VTABLE_ENTRY_ALIGN.
2018-12-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config/msp430/msp430.h: Define TARGET_VTABLE_ENTRY_ALIGN.

From-SVN: r267229
2018-12-18 11:44:22 +00:00
Jakub Jelinek 4714942e0f re PR target/88513 (FAIL: gcc.target/i386/pr59591-1.c)
PR target/88513
	PR target/88514
	* optabs.def (vec_pack_sbool_trunc_optab, vec_unpacks_sbool_hi_optab,
	vec_unpacks_sbool_lo_optab): New optabs.
	* optabs.c (expand_widen_pattern_expr): Use vec_unpacks_sbool_*_optab
	and pass additional argument if both input and target have the same
	scalar mode of VECTOR_BOOLEAN_TYPE_P vectors.
	* expr.c (expand_expr_real_2) <case VEC_PACK_TRUNC_EXPR>: Handle
	VECTOR_BOOLEAN_TYPE_P pack where result has the same scalar mode
	as the operands using vec_pack_sbool_trunc_optab.
	* tree-vect-stmts.c (supportable_widening_operation): Use
	vec_unpacks_sbool_{lo,hi}_optab for VECTOR_BOOLEAN_TYPE_P conversions
	where both wider_vectype and vectype have the same scalar mode.
	(supportable_narrowing_operation): Similarly use
	vec_pack_sbool_trunc_optab if narrow_vectype and vectype have the same
	scalar mode.
	* config/i386/i386.c (ix86_get_builtin)
	<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Check for VECTOR_MODE_P
	rather than non-VOIDmode.
	* config/i386/sse.md (vec_pack_trunc_qi, vec_pack_trunc_<mode>):
	Remove useless ()s around "register_operand", formatting fixes.
	(vec_pack_sbool_trunc_qi, vec_unpacks_sbool_lo_qi,
	vec_unpacks_sbool_hi_qi): New expanders.
	* doc/md.texi (vec_pack_sbool_trunc_M, vec_unpacks_sbool_hi_M,
	vec_unpacks_sbool_lo_M): Document.

	* gcc.target/i386/avx512f-pr88513-1.c: New test.
	* gcc.target/i386/avx512f-pr88513-2.c: New test.
	* gcc.target/i386/avx512vl-pr88464-1.c: New test.
	* gcc.target/i386/avx512vl-pr88464-2.c: New test.
	* gcc.target/i386/avx512vl-pr88464-3.c: New test.
	* gcc.target/i386/avx512vl-pr88464-4.c: New test.
	* gcc.target/i386/avx512vl-pr88513-1.c: New test.
	* gcc.target/i386/avx512vl-pr88513-2.c: New test.
	* gcc.target/i386/avx512vl-pr88513-3.c: New test.
	* gcc.target/i386/avx512vl-pr88513-4.c: New test.
	* gcc.target/i386/avx512vl-pr88514-1.c: New test.
	* gcc.target/i386/avx512vl-pr88514-2.c: New test.
	* gcc.target/i386/avx512vl-pr88514-3.c: New test.

From-SVN: r267228
2018-12-18 12:22:00 +01:00
Jozef Lawrynowicz 6a30d8c0a6 combine.c (update_rsp_from_reg_equal): Only look for the nonzero bits of src in nonzero_bits_mode if...
2018-12-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* combine.c (update_rsp_from_reg_equal): Only look for the nonzero bits
	of src in nonzero_bits_mode if the mode of src is MODE_INT and
	HWI_COMPUTABLE.
	(reg_nonzero_bits_for_combine): Add clarification to comment.

From-SVN: r267227
2018-12-18 10:29:42 +00:00
Wei Xiao 5d54c79858 driver-i386.c (host_detect_local_cpu): Detect cascadelake.
gcc/ChangeLog
2018-12-18  Wei Xiao  <wei3.xiao@intel.com>

	* config/i386/driver-i386.c (host_detect_local_cpu): Detect cascadelake.
	* config/i386/i386.c (fold_builtin_cpu): Handle cascadelake.
	* doc/extend.texi: Add cascadelake.

gcc/testsuite/ChangeLog
2018-12-18  Wei Xiao  <wei3.xiao@intel.com>

	* g++.target/i386/mv16.C: Handle new march.
	* gcc.target/i386/builtin_target.c: Ditto.

libgcc/ChangeLog
2018-12-18  Wei Xiao  <wei3.xiao@intel.com>

	* config/i386/cpuinfo.c (get_intel_cpu): Handle cascadelake.
	* config/i386/cpuinfo.h: Add INTEL_COREI7_CASCADELAKE.

From-SVN: r267226
2018-12-18 03:41:44 +00:00
GCC Administrator f9fd26fe57 Daily bump.
From-SVN: r267225
2018-12-18 00:16:39 +00:00
Jonathan Wakely 2017595dfa PR libstdc++/71044 fix off-by-one errors introduced recently
The recent changes to append/concat directly from strings (without
constructing paths) introduced regressions where one of the components
could be omitted from the iteration sequence in the result.

	PR libstdc++/71044
	* src/filesystem/std-path.cc (path::_M_append): Fix off-by-one error
	that caused a component to be lost from the iteration sequence.
	(path::_M_concat): Likewise.
	* testsuite/27_io/filesystem/path/append/source.cc: Test appending
	long strings.
	* testsuite/27_io/filesystem/path/concat/strings.cc: Test
	concatenating long strings.
	* testsuite/27_io/filesystem/path/construct/string_view.cc: Test
	construction from long string.

From-SVN: r267222
2018-12-17 22:43:31 +00:00
Peter Bergner 00fd062886 re PR target/87870 (ppc64le generates poor code when loading constants into TImode vars)
gcc/
	PR target/87870
	* config/rs6000/vsx.md (nW): New mode iterator.
	(vsx_mov<mode>_64bit): Use it.  Remove redundant GPR 0/-1 alternative.
	Update length attribute for (<??r>, <nW>)  alternative.
	(vsx_mov<mode>_32bit): Likewise.

gcc/testsuite/
	PR target/87870
	* gcc.target/powerpc/pr87870.c: New test.

From-SVN: r267221
2018-12-17 16:07:11 -06:00
Jakub Jelinek 1e9d69235a re PR c++/88410 (internal compiler error: output_operand: invalid expression as operand)
PR c++/88410
	* cp-gimplify.c (cp_fold) <case ADDR_EXPR>: For offsetof-like folding,
	call maybe_constant_value on val to see if it is INTEGER_CST.

	* g++.dg/cpp0x/pr88410.C: New test.

From-SVN: r267220
2018-12-17 22:54:37 +01:00
Jonathan Wakely f4d458f3fa PR c++/52321 print note for static_cast to/from incomplete type
PR c++/52321
	* typeck.c (build_static_cast): Print a note when the destination
	type or the operand is a pointer/reference to incomplete class type.

From-SVN: r267219
2018-12-17 21:49:58 +00:00
Tom de Vries 693ad66b86 [nvptx] Move macro defs to top of nvptx.c
Move macro definition to the top of the file, allowing them to be used
there-after.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-17  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (PTX_VECTOR_LENGTH, PTX_WORKER_LENGTH,
	PTX_DEFAULT_RUNTIME_DIM): Move to the top of the file.

From-SVN: r267216
2018-12-17 21:27:19 +00:00
Tom de Vries 5d17a4763a [nvptx] Add PTX_WARP_SIZE
Add PTX_WARP_SIZE constant and use it in nvptx_simt_vf.  The function
nvptx_simt_vf is used for OpenMP, and using PTX_WARP_SIZE here decouples the
OpenMP support from the PTX_VECTOR_LENGTH constant used in OpenACC support.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-17  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (PTX_WARP_SIZE): Define.
	(nvptx_simt_vf): Return PTX_WARP_SIZE instead of PTX_VECTOR_LENGTH.

From-SVN: r267215
2018-12-17 21:27:09 +00:00
Tom de Vries 7820b298ed [nvptx] Fix whitespace in nvptx_single and nvptx_neuter_pars
Fix whitespace in nvptx_single and nvptx_neuter_pars.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-17  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_single): Fix whitespace.
	(nvptx_neuter_pars): Likewise.

From-SVN: r267214
2018-12-17 21:26:59 +00:00
Tom de Vries 207e7fea7b [nvptx] Unify C/Fortran routine handling in nvptx_goacc_validate_dims
The Fortran front-end has a bug (PR72741) that means what when
nvptx_goacc_validate_dims is called for a Fortran routine, the dims parameter
is not the same as it would have been if the function would have been called for
an equivalent C routine.

Work around this bug by overriding the dims parameter for routines, allowing the
function to handle routines in Fortran and C the same.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-17  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Work around Fortran
	bug PR72741 by overriding dims parameter for routines.

From-SVN: r267213
2018-12-17 21:26:49 +00:00
Tom de Vries ec6c865c6d [nvptx] Rewrite nvptx_goacc_validate_dims to use predicate vars
The function nvptx_goacc_validate_dims has arguments decl and fn_level which
together describe different situations.

Introduce a predicate var for each situation, and use them, allowing to
understand what the function does in each situation without having to know the
way the situations are encoded in the args.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-12-17  Tom de Vries  <tdevries@suse.de>

	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Rewrite using
	predicate vars.

From-SVN: r267212
2018-12-17 21:26:39 +00:00
Steve Ellcey c764b12cca Add missing ChangeLog entry from last checkin:
2018-12-17  Steve Ellcey  <sellcey@cavium.com>

	* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
	* gcc.target/aarch64/torture/simd-abi-1.c: New test.
	* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.

From-SVN: r267210
2018-12-17 19:23:02 +00:00
Steve Ellcey ba1a78ffd9 aarch64-torture.exp: New file.
2018-12-17  Steve Ellcey  <sellcey@cavium.com>

	* gcc.target/aarch64/torture/aarch64-torture.exp: New file.
	* gcc.target/aarch64/torture/simd-abi-1.c: New test.
	* gcc.target/aarch64/torture/simd-abi-2.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-3.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-4.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-5.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-6.c: Ditto.
	* gcc.target/aarch64/torture/simd-abi-7.c: Ditto.

From-SVN: r267209
2018-12-17 19:18:17 +00:00
Steve Ellcey a0d0b980f1 aarch64-protos.h (aarch64_use_simple_return_insn_p): New prototype.
2018-12-17  Steve Ellcey  <sellcey@cavium.com>

	* config/aarch64/aarch64-protos.h (aarch64_use_simple_return_insn_p):
	New prototype.
	(aarch64_epilogue_uses): Ditto.
	* config/aarch64/aarch64.c (aarch64_attribute_table): New array.
	(aarch64_simd_decl_p): New function.
	(aarch64_reg_save_mode): New function.
	(aarch64_function_ok_for_sibcall): Check for simd calls.
	(aarch64_layout_frame): Check for simd function.
	(aarch64_gen_storewb_pair): Handle E_TFmode.
	(aarch64_push_regs): Use aarch64_reg_save_mode to get mode.
	(aarch64_gen_loadwb_pair): Handle E_TFmode.
	(aarch64_pop_regs): Use aarch64_reg_save_mode to get mode.
	(aarch64_gen_store_pair): Handle E_TFmode.
	(aarch64_gen_load_pair): Ditto.
	(aarch64_save_callee_saves): Handle different mode sizes.
	(aarch64_restore_callee_saves): Ditto.
	(aarch64_components_for_bb): Check for simd function.
	(aarch64_epilogue_uses): New function.
	(aarch64_process_components): Check for simd function.
	(aarch64_expand_prologue): Ditto.
	(aarch64_expand_epilogue): Ditto.
	(aarch64_expand_call): Ditto.
	(aarch64_use_simple_return_insn_p): New function.
	(TARGET_ATTRIBUTE_TABLE): New define.
	* config/aarch64/aarch64.h (EPILOGUE_USES): Redefine.
	(FP_SIMD_SAVED_REGNUM_P): New macro.
	* config/aarch64/aarch64.md (simple_return): New define_expand.
	(load_pair_dw_tftf): New instruction.
	(store_pair_dw_tftf): Ditto.
	(loadwb_pair<TX:mode>_<P:mode>): Ditto.
	(storewb_pair<TX:mode>_<P:mode>): Ditto.

From-SVN: r267208
2018-12-17 19:14:04 +00:00
Iain Buclaw 4d814b6989 Merge dmd upstream 237ca3fbe
Backports a fix where a bad cast to TypeFunction resulted in memory
corruption.  The logic in the function semantic has been fixed, and
casts have been replaced with a function call to always check the
front-end AST node value.

Reviewed-on: https://github.com/dlang/dmd/pull/9054

From-SVN: r267207
2018-12-17 18:32:31 +00:00
Martin Sebor 22b04f05ab builtin-snprintf-4.c: Adjust for ILP32.
gcc/testsuite/ChangeLog:
	* gcc.dg/tree-ssa/builtin-snprintf-4.c: Adjust for ILP32.

From-SVN: r267206
2018-12-17 11:10:58 -07:00
Uros Bizjak a81037cea6 re PR target/88502 (Inline built-in asinh, acosh, atanh for -ffast-math)
PR target/88502
	* internal-fn.def (ACOSH): New.
	(ASINH): Ditto.
	(ATANH): Ditto.
	* optabs.def (acosh_optab): New.
	(asinh_optab): Ditto.
	(atanh_optab): Ditto.
	* config/i386/i386-protos.h (ix86_emit_i387_asinh): New prototype.
	(ix86_emit_i387_acosh): Ditto.
	(ix86_emit_i387_atanh): Ditto.
	* config/i386/i386.c (ix86_emit_i387_asinh): New function.
	(ix86_emit_i387_acosh): Ditto.
	(ix86_emit_i387_atanh): Ditto.
	* config/i386/i386.md (asinhxf2): New expander.
	(asinh<mode>2):	Ditto.
	(acoshxf2): Ditto.
	(acosh<mode>2): Ditto.
	(atanhxf2): Ditto.
	(atanh<mode>2): Ditto.

From-SVN: r267204
2018-12-17 16:46:20 +01:00
David Edelsohn 61c43d82f2 config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
* config.gcc (powerpc-ibm-aix6.*): Delete extra_headers.
(powerpc-ibm-aix7.1.*): Same.
(powerpc-ibm-aix[789].*): Same.

From-SVN: r267203
2018-12-17 10:07:22 -05:00
H.J. Lu dc6b21cb4f DWARF: Don't expand hash table when no insertion is needed
dwarf2out_finish performs:

1. save_macinfo_strings
2. hash table traverse of index_string
3. output_macinfo -> output_macinfo_op
4. output_indirect_strings -> hash table traverse of output_index_string

find_slot_with_hash has

 if (insert == INSERT && m_size * 3 <= m_n_elements * 4)
    expand ();

which may expand hash table even if no insertion is neeed and change hash
table traverse order.  When output_macinfo_op is called, all index strings
have been added to hash table by save_macinfo_strings and we shouldn't
expand index string hash table.  Otherwise find_slot_with_hash will expand
hash table when hash table has the right size and hash table traverse of
output_index_string will have a different traverse order from index_string.

	PR debug/79342
	* dwarf2out.c (find_AT_string_in_table): Add insert argument
	defaulting to INSERT and replace INSERT.
	(find_AT_string): Likewise.
	(output_macinfo_op): Pass NO_INSERT to find_AT_string.

From-SVN: r267202
2018-12-17 05:49:16 -08:00
Jan Hubicka 0418f237b2 coverage.c (struct conts_entry): Add n_counts.
* coverage.c (struct conts_entry): Add n_counts.
	(remap_counts_file): Record number of ocunts.
	(get_coverage_counts): Verify that counts match.
	* coverage.h (get_coverage_counts): Update prototype.
	* profile.c (get_exec_counts. compute_value_histograms): Add
	n_counts parametrs.

From-SVN: r267200
2018-12-17 13:21:52 +00:00
Senthil Kumar Selvaraj d7c0082636 re PR rtl-optimization/88253 (Inlining of function incorrectly deletes volatile register access when using XOR in avr-gcc)
Fix PR 88253

gcc/ChangeLog:

	PR rtl-optimization/88253
	* combine.c (combine_simplify_rtx): Test for side-effects before
	substituting by zero.

gcc/testsuite/ChangeLog:

	PR rtl-optimization/88253
	* gcc.target/avr/pr88253.c: New test.

From-SVN: r267198
2018-12-17 10:50:54 +00:00
Richard Sandiford 13e08dc939 Add a loop versioning pass
This patch adds a pass that versions loops with variable index strides
for the case in which the stride is 1.  E.g.:

    for (int i = 0; i < n; ++i)
      x[i * stride] = ...;

becomes:

    if (stepx == 1)
      for (int i = 0; i < n; ++i)
        x[i] = ...;
    else
      for (int i = 0; i < n; ++i)
        x[i * stride] = ...;

This is useful for both vector code and scalar code, and in some cases
can enable further optimisations like loop interchange or pattern
recognition.

The pass gives a 7.6% improvement on Cortex-A72 for 554.roms_r at -O3
and a 2.4% improvement for 465.tonto.  I haven't found any SPEC tests
that regress.

Sizewise, there's a 10% increase in .text for both 554.roms_r and
465.tonto.  That's obviously a lot, but in tonto's case it's because
the whole program is written using assumed-shape arrays and pointers,
so a large number of functions really do benefit from versioning.
roms likewise makes heavy use of assumed-shape arrays, and that
improvement in performance IMO justifies the code growth.

The next biggest .text increase is 4.5% for 548.exchange2_r.  I did see
a small (0.4%) speed improvement there, but although both 3-iteration runs
produced stable results, that might still be noise.  There was a slightly
larger (non-noise) improvement for a 256-bit SVE model.

481.wrf and 521.wrf_r .text grew by 2.8% and 2.5% respectively, but
without any noticeable improvement in performance.  No other test grew
by more than 2%.

Although the main SPEC beneficiaries are all Fortran tests, the
benchmarks we use for SVE also include some C and C++ tests that
benefit.

Using -frepack-arrays gives the same benefits in many Fortran cases.
The problem is that using that option inappropriately can force a full
array copy for arguments that the function only reads once, and so it
isn't really something we can turn on by default.  The new pass is
supposed to give most of the benefits of -frepack-arrays without
the risk of unnecessary repacking.

The patch therefore enables the pass by default at -O3.

2018-12-17  Richard Sandiford  <richard.sandiford@arm.com>
	    Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
	    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

gcc/
	* doc/invoke.texi (-fversion-loops-for-strides): Document
	(loop-versioning-group-size, loop-versioning-max-inner-insns)
	(loop-versioning-max-outer-insns): Document new --params.
	* Makefile.in (OBJS): Add gimple-loop-versioning.o.
	* common.opt (fversion-loops-for-strides): New option.
	* opts.c (default_options_table): Enable fversion-loops-for-strides
	at -O3.
	* params.def (PARAM_LOOP_VERSIONING_GROUP_SIZE)
	(PARAM_LOOP_VERSIONING_MAX_INNER_INSNS)
	(PARAM_LOOP_VERSIONING_MAX_OUTER_INSNS): New parameters.
	* passes.def: Add pass_loop_versioning.
	* timevar.def (TV_LOOP_VERSIONING): New time variable.
	* tree-ssa-propagate.h
	(substitute_and_fold_engine::substitute_and_fold): Add an optional
	block parameter.
	* tree-ssa-propagate.c
	(substitute_and_fold_engine::substitute_and_fold): Likewise.
	When passed, only walk blocks dominated by that block.
	* tree-vrp.h (range_includes_p): Declare.
	(range_includes_zero_p): Turn into an inline wrapper around
	range_includes_p.
	* tree-vrp.c (range_includes_p): New function, generalizing...
	(range_includes_zero_p): ...this.
	* tree-pass.h (make_pass_loop_versioning): Declare.
	* gimple-loop-versioning.cc: New file.

gcc/testsuite/
	* gcc.dg/loop-versioning-1.c: New test.
	* gcc.dg/loop-versioning-10.c: Likewise.
	* gcc.dg/loop-versioning-11.c: Likewise.
	* gcc.dg/loop-versioning-2.c: Likewise.
	* gcc.dg/loop-versioning-3.c: Likewise.
	* gcc.dg/loop-versioning-4.c: Likewise.
	* gcc.dg/loop-versioning-5.c: Likewise.
	* gcc.dg/loop-versioning-6.c: Likewise.
	* gcc.dg/loop-versioning-7.c: Likewise.
	* gcc.dg/loop-versioning-8.c: Likewise.
	* gcc.dg/loop-versioning-9.c: Likewise.
	* gfortran.dg/loop_versioning_1.f90: Likewise.
	* gfortran.dg/loop_versioning_2.f90: Likewise.
	* gfortran.dg/loop_versioning_3.f90: Likewise.
	* gfortran.dg/loop_versioning_4.f90: Likewise.
	* gfortran.dg/loop_versioning_5.f90: Likewise.
	* gfortran.dg/loop_versioning_6.f90: Likewise.
	* gfortran.dg/loop_versioning_7.f90: Likewise.
	* gfortran.dg/loop_versioning_8.f90: Likewise.

From-SVN: r267197
2018-12-17 10:05:51 +00:00
Steven G. Kargl fb2974dcf5 re PR fortran/85314 (gcc/fortran/resolve.c:9222: unreachable code ?)
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85314
	* resolve.c (resolve_transfer): Remove dead code.

From-SVN: r267196
2018-12-17 02:19:58 +00:00
GCC Administrator 25f51c73fe Daily bump.
From-SVN: r267195
2018-12-17 00:16:51 +00:00
Iain Buclaw 3b26756ba2 libphobos: Merge common version blocks for core.sys.posix.sys.msg.
This is a continuation of simplifying C bindings so there aren't dozens
of duplicated code for each architecture.  For this particular module,
it now more closely resembles how glibc arranges msq.h, fixing a couple
of targets in the process, notably X32.

Backport from upstream druntime 2.084.

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

From-SVN: r267192
2018-12-16 23:18:25 +00:00
Jan Hubicka 8c02e05435 ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes are not streamed in.
* ipa-fnsummary.c (remap_edge_change_prob): Do not ICE when changes
	are not streamed in.

From-SVN: r267191
2018-12-16 18:57:48 +00:00
Steven G. Kargl e9b75848c3 re PR fortran/88116 (ICE in gfc_convert_constant(): Unexpected type)
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88116
	PR fortran/88467
	* array.c (gfc_match_array_constructor): Check return value of
	gfc_convert_type().  Skip constructor elements with BT_UNKNOWN,
	which need to go through resolution.
	* intrinsic.c (gfc_convert_type_warn): Return early if the types
	martch (i.e., no conversion is required).
	* simplify.c (gfc_convert_constant): Remove a gfc_internal_error,
	and return gfc_bad_expr.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88116
	* gfortran.dg/pr88116_1.f90: New test.
	* gfortran.dg/pr88116_2.f90: Ditto.

	PR fortran/88467
	* gfortran.dg/pr88467.f90: New test.

From-SVN: r267189
2018-12-16 16:29:43 +00:00
Steven G. Kargl 26ca4e0587 decl.c (variable_decl): Typo fixes.
2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	* decl.c (variable_decl): Typo fixes.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	* gfortran.dg/pr88138.f90: Remove extraneous 's' in comment.

From-SVN: r267188
2018-12-16 16:01:19 +00:00
Thomas Koenig bd810d6370 PF fortran/88364
2018-12-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PF fortran/88364
	* trans-expr.c (gfc_conv_expr_reference): Do not add clobber if
	the expression contains a reference.

2018-12-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/88363
	* intent_out_13.f90: New test.

From-SVN: r267187
2018-12-16 14:32:46 +00:00
H.J. Lu 57bfedaffe x86: Revert reversion 267133
Revert commit:

commit 76c21b271247ccbd681bdb4530426d2fe35dbfa5
Author: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Dec 14 12:38:04 2018 +0000

    x86: Don't use get_frame_size when finalizing stack frame

gcc/

	PR target/88483
	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Revert
	reversion 267133.

gcc/testsuite/

	PR target/88483
	* gcc.target/i386/stackalign/pr88483.c: Removed.  Revert
	reversion 267133.

From-SVN: r267186
2018-12-16 05:55:18 -08:00
Jan Hubicka ddfb13175f ipa-fnsummary.c (analyze_function_body): Do not loeak conds and size_time_table.
* ipa-fnsummary.c (analyze_function_body): Do not loeak conds and
	size_time_table.
	(ipa_fn_summary_generate): Add prevails parameter; do not allocate
	data when symbol is not prevailing.
	(inline_read_section): Likewise.

From-SVN: r267185
2018-12-16 12:05:04 +00:00
Steven G. Kargl 19adb97a31 re PR fortran/87994 (ICE in match_data_constant, at fortran/decl.c:399)
2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/87944
	* decl.c (match_data_constant): Allow inquiry parameter as data
	constant in data statement.

2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/87944
	* gfortran.dg/pr87994_1.f90: New test.
	* gfortran.dg/pr87994_2.f90: Ditto.
	* gfortran.dg/pr87994_3.f90: Ditto.

From-SVN: r267184
2018-12-16 03:33:05 +00:00
GCC Administrator 3dd6f57375 Daily bump.
From-SVN: r267183
2018-12-16 00:16:43 +00:00
Jakub Jelinek 784417d1f8 re PR c++/88482 (ICE when wrongly declaring __cxa_allocate_exception)
PR c++/88482
	* except.c (verify_library_fn): New function.
	(declare_library_fn): Use it.  Initialize TM even if the non-TM
	library function has been user declared.
	(do_end_catch): Don't set TREE_NOTHROW on error_mark_node.
	(expand_start_catch_block): Don't call initialize_handler_parm
	for error_mark_node.
	(build_throw): Use verify_library_fn.  Initialize TM even if the
	non-TM library function has been user declared.  Don't crash if
	any library fn is error_mark_node.

	* g++.dg/eh/builtin5.C: New test.
	* g++.dg/eh/builtin6.C: New test.
	* g++.dg/eh/builtin7.C: New test.
	* g++.dg/eh/builtin8.C: New test.
	* g++.dg/eh/builtin9.C: New test.
	* g++.dg/eh/builtin10.C: New test.
	* g++.dg/eh/builtin11.C: New test.
	* g++.dg/parse/crash55.C: Adjust expected diagnostics.

	* eh_cpp.cc (__cxa_throw): Change DEST argument type from
	void * to void (*) (void *).
	(_ITM_cxa_throw): Likewise.
	* libitm.h (_ITM_cxa_throw): Likewise.
	* libitm.texi (_ITM_cxa_throw): Likewise.

From-SVN: r267179
2018-12-16 00:51:31 +01:00
Steven G. Kargl e310b38153 re PR fortran/88138 (ICE in gfc_arith_concat, at fortran/arith.c:1007)
2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88138
	* decl.c (variable_decl): Check that a derived isn't being assigned
	an incompatible entity in an initialization.
 
2019-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88138
	* gfortran.dg/pr88138.f90: new test.

From-SVN: r267177
2018-12-15 22:53:26 +00:00