Commit Graph

166467 Commits

Author SHA1 Message Date
Bernd Edlinger
f3a18a5c6c re PR c/88928 (ICE segfault in check_address_or_pointer_of_packed_member since r268075)
2019-01-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR c/88928
        * c-warn.c (check_alignment_of_packed_member): Add a boolean parameter
        for rvalue context.  Handle rvalues correctly.  Use min_align_of_type
        instead of TYPE_ALIGN.
        (check_address_or_pointer_of_packed_member): Handle rvalues coorrectly.
        Use min_align_of_type instead of TYPE_ALIGN_UNIT.  Check for NULL
        pointer from TYPE_STUB_DECL.

testsuite:
2019-01-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR c/88928
        * c-c++-common/Waddress-of-packed-member-1.c: New test case.
        * gcc.dg/pr88928.c: New test case.

From-SVN: r268118
2019-01-21 17:12:09 +00:00
Jakub Jelinek
0fba41e0f0 utf-array.c: Allow wchar_t to be printed as {long ,short ,}{unsigned ,}int.
* gcc.dg/utf-array.c: Allow wchar_t to be printed as
	{long ,short ,}{unsigned ,}int.

From-SVN: r268117
2019-01-21 17:58:04 +01:00
Tom Tromey
2197ea1791 Fix leak in splay-tree
Philippe Waroquiers noticed a memory leak in gdb, which he tracked
down to a bug in splay-tree.  splay_tree_remove does not call the
`delete_key' function when it removes the old node; but it should.

I looked at every splay tree in GCC and there is only one that passes
a non-NULL delete function -- the one in lto.c.  That file does not
call splay_tree_remove.  So, I think this is safe to check in.

I re-ran the LTO tests to double check.

libiberty/
	* splay-tree.c (splay_tree_remove): Delete the key if necessary.

From-SVN: r268116
2019-01-21 15:25:29 +00:00
Richard Biener
c73e7656f5 re PR tree-optimization/88934 (ICE: verify_gimple failed (Error: mismatching comparison operand types))
2019-01-21  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88934
	* tree-vect-slp.c (vect_mask_constant_operand_p): Always look
	at the possibly non-constant operand.
	(vect_get_constant_vectors): Adjust.

	* gfortran.dg/pr88934.f90: New testcase.

From-SVN: r268115
2019-01-21 14:49:42 +00:00
H.J. Lu
6c0d746f66 i386: Move Intel intrinsics head files to <immintrin.h>
According to Intel Intrinsics Guide:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/

Intel intrinsics should be available by including <immintrin.h>.  This
patch moves remaining Intel intrinsics head files from <x86intrin.h> to
<immintrin.h>.

	PR target/71659
	* config/i386/adxintrin.h: Just check _IMMINTRIN_H_INCLUDED.
	* config/i386/clflushoptintrin.h: Check _IMMINTRIN_H_INCLUDED
	instead of _X86INTRIN_H_INCLUDED.
	* onfig/i386/clwbintrin.h: Likewise.
	* config/i386/pkuintrin.h: Likewise.
	* config/i386/prfchwintrin.h: Likewise.
	* config/i386/rdseedintrin.h: Likewise.
	* config/i386/wbnoinvdintrin.h: Likewise.
	* config/i386/xsavecintrin.h: Likewise.
	* config/i386/xsavesintrin.h: Likewise.
	* config/i386/fxsrintrin.h: Enable _IMMINTRIN_H_INCLUDED check.
	* config/i386/xsaveintrin.h: Likewise.
	* config/i386/xsaveoptintrin.h: Likewise.
	* config/i386/x86intrin.h: Move "#include" <rdseedintrin.h>,
	<prfchwintrin.h>, <fxsrintrin.h>, <xsaveintrin.h>,
	<xsaveoptintrin.h>, <adxintrin.h>, <clwbintrin.h>,
	<clflushoptintrin.h>, <xsavesintrin.h>, <xsavecintrin.h>,
	<wbnoinvdintrin.h> and <pkuintrin.h> to ...
	* config/i386/immintrin.h: Here.

From-SVN: r268113
2019-01-21 04:23:49 -08:00
Jakub Jelinek
8f10fb5065 re PR ipa/86590 (Codegen is poor when passing std::string by value with _GLIBCXX_EXTERN_TEMPLATE undefined)
PR libstdc++/86590
	* include/bits/char_traits.h (__constant_string_p,
	__constant_char_array_p): Use __builtin_is_constant_evaluated if
	available.

From-SVN: r268112
2019-01-21 12:55:52 +01:00
Ulrich Drepper
d715f55431 Fix after P0600.
gcc/testsuite/ChangeLog
2019-02-20  Ulrich Drepper  <drepper@redhat.com>

	Fix after P0600.
	* g++.dg/init/new39.C: Don't just ignore result of new.

libstdc++/ChangeLog
2019-02-20  Ulrich Drepper  <drepper@redhat.com>

	Implement C++20 P0600r1.
	* include/backward/hash_map: Add nodiscard attribute to empty.
	* include/backward/hash_set: Likewise.
	* backward/hashtable.h: Likewise.
	* include/bits/basic_string.h: Likewise.
	* include/bits/forward_list.h: Likewise.
	* include/bits/hashtable.h: Likewise.
	* include/bits/regex.h: Likewise.
	* include/bits/stl_deque.h: Likewise.
	* include/bits/stl_list.h: Likewise.
	* include/bits/stl_map.h: Likewise.
	* include/bits/stl_multimap.h: Likewise.
	* include/bits/stl_multiset.h: Likewise.
	* include/bits/stl_queue.h: Likewise.
	* include/bits/stl_set.h: Likewise.
	* include/bits/stl_stack.h: Likewise.
	* include/bits/stl_tree.h: Likewise.
	* include/bits/stl_vector.h: Likewise.
	* include/bits/unordered_map.h: Likewise.
	* include/bits/unordered_set.h: Likewise.
	* include/debug/array: Likewise.
	* include/experimental/any: Likewise.
	* include/experimental/bits/fs_path.h: Likewise.
	* include/experimental/internet: Likewise.
	* include/experimental/string_view: Likewise.
	* include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp:
	Likewise.
	*
include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hp:
	Likewise.
	* include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp:
	Likewise.
	* include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp:
	Likewise.
	* include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp:
	Likewise.
	* include/ext/pb_ds/detail/tree_trace_base.hpp: Likewise.
	* include/ext/pb_ds/trie_policy.hpp: Likewise.
	* include/ext/rope: Likewise.
	* include/ext/slist: Likewise.
	* include/ext/vstring.h: Likewise.
	* include/profile/array: Likewise.
	* include/std/array: Likewise.
	* include/tr1/array: Likewise.
	* include/tr1/hashtable.h: Likewise.
	* include/tr1/regex: Likewise.
	* include/tr2/dynamic_bitset: Likewise.
	* include/bits/alloc_traits.h: Add nodiscard attribute to
	allocate.
	* include/experimental/memory_resource: Likewise.
	* include/ext/alloc_traits.h: Likewise.
	* include/ext/array_allocator.h: Likewise.
	* include/ext/bitmap_allocator.h: Likewise.
	* include/ext/debug_allocator.h: Likewise.
	* include/ext/extptr_allocator.h: Likewise.
	* include/ext/mt_allocator.h: Likewise.
	* include/ext/new_allocator.h: Likewise.
	* include/ext/pool_allocator.h: Likewise.
	* include/ext/throw_allocator.h: Likewise.
	* include/std/scoped_allocator: Likewise.
	* libsupc++/eh_alloc.cc: Likewise.
	* include/std/future: Add nodiscard attribute to async.
	* libsupc++/new: Add nodiscard attribute to new.

From-SVN: r268111
2019-01-21 11:47:30 +00:00
GCC Administrator
91f1f6cd66 Daily bump.
From-SVN: r268110
2019-01-21 00:16:36 +00:00
Martin Jambor
c628d1c325 Limit AA walking in IPA summary generation
2019-01-20  Martin Jambor  <mjambor@suse.cz>

	PR ipa/87615
	* ipa-prop.h (struct ipa_func_body_info): Replaced field aa_walked
	with aa_walk_budget.
	* cgraph.h (ipa_polymorphic_call_context::get_dynamic_type): Add
	aa_walk_budget_p parameter.
	* ipa-fnsummary.c (unmodified_parm_1): New parameter fbi.  Limit AA
	walk.  Updated all callers.
	(unmodified_parm): New parameter fbi, pass it to unmodified_parm_1.
	(eliminated_by_inlining_prob): New parameter fbi, pass it on to
	unmodified_parm.
	(will_be_nonconstant_expr_predicate): New parameter fbi, removed
	parameter info.  Extract info from fbi.  Pass fbi to recursive calls
	and to unmodified_parm.
	(phi_result_unknown_predicate): New parameter fbi, removed parameter
	info, updated call to will_be_nonconstant_expr_predicate.
	(param_change_prob): New parameter fbi, limit AA walking.
	(analyze_function_body): Initialize aa_walk_budget in fbi.  Update
	calls to various above functions.
	* ipa-polymorphic-call.c (get_dynamic_type): Add aa_walk_budget_p
	parameter.  Use it to limit AA walking.
	* ipa-prop.c (detect_type_change_from_memory_writes): New parameter
	fbi, limit AA walk.
	(detect_type_change): New parameter fbi, pass it on to
	detect_type_change_from_memory_writes.
	(detect_type_change_ssa): Likewise.
	(aa_overwalked): Removed.
	(parm_preserved_before_stmt_p): Assume fbi is never NULL, stream line
	accordingly, adjust to the neew AA limiting scheme.
	(parm_ref_data_preserved_p): Likewise.
	(ipa_compute_jump_functions_for_edge): Adjust call to
	get_dynamic_type.
	(ipa_analyze_call_uses): Likewise.
	(ipa_analyze_virtual_call_uses): Pass fbi to detect_type_change_ssa.
	(ipa_analyze_node): Initialize aa_walk_budget.
	(ipcp_transform_function): Likewise.
	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Update call
	to get_dynamic_type.

From-SVN: r268107
2019-01-20 21:17:02 +01:00
Iain Buclaw
49686677ed [D] Don't predefine GNU_StackGrowsDown on every target.
Every back-end defines STACK_GROWS_DOWNWARD, the condition should
instead be  checking whether it was defined as 1 or 0.

gcc/d/ChangeLog:

2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_init_versions): Check value of
	STACK_GROWS_DOWNWARD.

From-SVN: r268106
2019-01-20 18:53:13 +00:00
Gerald Pfeifer
5e2a724199 * allocfail.c (main): Increase portability of printf statement.
From-SVN: r268105
2019-01-20 15:09:02 +00:00
Iain Buclaw
5bdebb51a6 [D] Fix identity comparison for structs with complex float fields.
gcc/d/ChangeLog:

2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (identity_compare_p): Return false if seen built-in
	type with padding.
	(build_float_identity): Moved here from expr.cc.
	(lower_struct_comparison): Handle real and complex types.
	* d-tree.h (build_float_identity): New.
	* expr.cc (build_float_identity): Move to d-codegen.cc.

gcc/testsuite/ChangeLog:

2019-01-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* gdc.dg/runnable.d: Add more tests for comparing complex types.

From-SVN: r268104
2019-01-20 12:55:38 +00:00
Johannes Pfau
70d87497e7 [D] Fix IdentityExp comparison for complex floats.
gcc/d/ChangeLog:

2019-01-20  Johannes Pfau  <johannespfau@gmail.com>

	* expr.cc (build_float_identity): New function.
	(ExprVisitor::visit(IdentityExp)): Add support for complex types.

gcc/testsuite/ChangeLog:

2019-01-20  Johannes Pfau  <johannespfau@gmail.com>

	* gdc.dg/runnable.d: Add tests for comparing complex types.

From-SVN: r268103
2019-01-20 12:15:47 +00:00
Kewen Lin
a766ecb0d4 vector long long and vector double require vsx support.
gcc/testsuite/ChangeLog

    * gcc.target/powerpc/altivec_vld_vst_addr.c: Remove, split into 
    altivec_vld_vst_addr-1.c and altivec_vld_vst_addr-2.c.
    * gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test.
    * gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto.

From-SVN: r268102
2019-01-20 05:58:47 +00:00
GCC Administrator
c72473e47a Daily bump.
From-SVN: r268101
2019-01-20 00:16:26 +00:00
Dominique d'Humieres
b4e17cadd5 [multiple changes]
2019-01-19  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/37835
	* resolve.c (resolve_types): Add !flag_automatic.
	* symbol.c (gfc_add_save): Silence warnings.

2019-01-18  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/37835
	* gfortran.dg/no-automatic.f90: New test.

From-SVN: r268098
2019-01-19 22:45:43 +01:00
Steven G. Kargl
5131b898e5 re PR fortran/77960 (ICE in gfc_conv_ss_startstride, at fortran/trans-array.c:3966)
2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77960
	* io.c (match_io_element): input-item cannot be an external function.
 
2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77960
	* gfortran.dg/pr77960.f90: New test.

From-SVN: r268097
2019-01-19 21:18:26 +00:00
Thomas Koenig
8558af5023 re PR fortran/56789 (Handling of contiguous dummy arguments)
2018-01-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/56789
	* trans-expr.c (gfc_conv_procedure_call): Call
	gfc_conv_subref_array_arg if the formal arg is contiguous
	and the actual arg may not be.

2018-01-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/56789
	* gfortran.dg/contiguous_3.f90: Make code compilant.  Remove
	scan-tree tests that fail with patch.
	* gfortran.dg/contiguous_8.f90: New test.


Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>

From-SVN: r268096
2019-01-19 20:06:41 +00:00
Jakub Jelinek
e76c8e5612 aarch64.c (aarch64_stack_protect_guard): Move outside of #if CHECKING_P code.
* config/aarch64/aarch64.c (aarch64_stack_protect_guard): Move
	outside of #if CHECKING_P code.

From-SVN: r268095
2019-01-19 18:28:29 +01:00
Richard Sandiford
e047844bd6 Claw back some of the code size regression in 548.exchange2_r
This patch tries harder to detect cases in which the inner dimension
of an array access is invariant, such as:

     x(i, :) = 100

It fixes some of the code size regression in 548.exchange2_r, with
size improving by 5% compared to before the patch.  Of the two other
SPEC 2017 tests affected by loop versioning, 554.roms_r improved by a
trivial amount (0.3%) and 549.fotonik3d_r didn't change.  All three
results are with -Ofast -flto.

2019-01-19  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* gimple-loop-versioning.cc (loop_versioning::dump_inner_likelihood):
	New function, split out from...
	(loop_versioning::analyze_stride): ...here.
	(loop_versioning::find_per_loop_multiplication): Use gassign.
	(loop_versioning::analyze_term_using_scevs): Return a success code.
	(loop_versioning::analyze_arbitrary_term): New function.
	(loop_versioning::analyze_address_fragment): Use
	analyze_arbitrary_term if all else fails.

gcc/testsuite/
	* gfortran.dg/loop_versioning_1.f90: Bump the number of identified
	inner strides.
	* gfortran.dg/loop_versioning_9.f90: New test.
	* gfortran.dg/loop_versioning_10.f90: Likewise.

From-SVN: r268093
2019-01-19 12:59:51 +00:00
Thomas Koenig
b9e25708aa re PR fortran/88871 (ICE segmentation fault in f951)
2019-01-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/88871
	* resolve.c (resolve_ref): Fix logic for removal of
	reference.

From-SVN: r268092
2019-01-19 11:03:28 +00:00
Jakub Jelinek
152f258f9a re PR fortran/88902 (ICE: Segmentation fault (in DFS::DFS_write_tree_body))
PR fortran/88902
	* trans-decl.c (gfc_get_symbol_decl): Don't add length to function
	or parent function if it has been added there already.

	* gfortran.dg/pr88902.f90: New test.

From-SVN: r268091
2019-01-19 09:43:12 +01:00
Martin Sebor
1f7c5604c8 attr-nonstring-3.c: Remove an xfail.
gcc/testsuite/ChangeLog:

	* c-c++-common/attr-nonstring-3.c: Remove an xfail.

From-SVN: r268090
2019-01-18 17:46:56 -07:00
GCC Administrator
03795aa0ba Daily bump.
From-SVN: r268089
2019-01-19 00:16:34 +00:00
Jonathan Wakely
fb54aa5915 PR libstdc++/88782 avoid ODR problems in std::make_shared
The old version of _Sp_counted_ptr_inplace::_M_get_deleter (up to GCC
8.2.0) expects to be passed a real std::typeinfo object, so mixing that
with the new definition of the __shared_ptr constructor (which always
passes the fake tag) leads to accessing the fake object as a real
std::typeinfo. Instead of trying to make it safe to mix the old and new
definitions, just stop using that function. By passing a reference to
__shared_ptr::_M_ptr to the __shared_count constructor it can be set
directly, without needing to obtain the pointer via the _M_get_deleter
back-channel. This avoids a virtual dispatch (which fixes PR 87514).

This means that code built against new libstdc++ headers doesn't use
_M_get_deleter at all, and so make_shared works the same whether RTTI is
enabled or not.

Also change _M_get_deleter so that it checks for a real type_info object
even when RTTI is disabled, by calling a library function. Unless
libstdc++ itself is built without RTTI that library function will be
able to test if it's the right type_info. This means the new definition
of _M_get_deleter can handle both the fake type_info tag and a real
type_info object, even if built without RTTI.

If linking to objects built against older versions of libstdc++ then if
all objects use -frtti or all use -fno-rtti, then the caller of
_M_get_deleter and the definition of _M_get_deleter will be consistent
and it will work. If mixing -frtti with -fno-rtti it can still fail if
the linker picks an old definition of _M_get_deleter and an old
__shared_ptr constructor that are incompatible. In that some or all
objects might need to be recompiled.

	PR libstdc++/87514
	PR libstdc++/87520
	PR libstdc++/88782
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.26): Export new symbol.
	* include/bits/shared_ptr.h
	(shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...))
	(allocate_shared): Change to use new tag type.
	* include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_eq):
	Declare new member function.
	(_Sp_alloc_shared_tag): Define new type.
	(_Sp_counted_ptr_inplace): Declare __shared_count<_Lp> as a friend.
	(_Sp_counted_ptr_inplace::_M_get_deleter) [!__cpp_rtti]: Use
	_Sp_make_shared_tag::_S_eq to check type_info.
	(__shared_count(Ptr, Deleter),__shared_count(Ptr, Deleter, Alloc)):
	Constrain to prevent being called with _Sp_alloc_shared_tag.
	(__shared_count(_Sp_make_shared_tag, const _Alloc&, Args&&...)):
	Replace constructor with ...
	(__shared_count(Tp*&, _Sp_alloc_shared_tag<_Alloc>, Args&&...)): Use
	reference parameter so address of the new object can be returned to
	the caller. Obtain the allocator from the tag type.
	(__shared_ptr(_Sp_make_shared_tag, const Alloc&, Args&&...)): Replace
	constructor with ...
	(__shared_ptr(_Sp_alloc_shared_tag<Alloc>, Args&&...)): Pass _M_ptr
	to the __shared_count constructor.
	(__allocate_shared): Change to use new tag type.
	* src/c++11/shared_ptr.cc (_Sp_make_shared_tag::_S_eq): Define.

From-SVN: r268086
2019-01-18 21:28:48 +00:00
Jason Merrill
dea93fc60d PR c++/88875 - error with explicit list constructor.
In my patch for CWG issue 2267, I changed reference_binding to clear
CONSTRUCTOR_IS_DIRECT_INIT on the argument init-list.  But that breaks if
there's another candidate for which CONSTRUCTOR_IS_DIRECT_INIT is correct.
So instead, let's encode in the conversion that we want to override the
flag.

	* call.c (reference_binding): Don't modify EXPR.  Set
	need_temporary_p on the ck_user conversion for a temporary.
	(convert_like_real): Check it.

From-SVN: r268085
2019-01-18 15:35:57 -05:00
Ian Lance Taylor
4f4a855d82 libgo: update to Go1.12beta2
Reviewed-on: https://go-review.googlesource.com/c/158019

gotools/:
	* Makefile.am (go_cmd_vet_files): Update for Go1.12beta2 release.
	(GOTOOLS_TEST_TIMEOUT): Increase to 600.
	(check-runtime): Export LD_LIBRARY_PATH before computing GOARCH
	and GOOS.
	(check-vet): Copy golang.org/x/tools into check-vet-dir.
	* Makefile.in: Regenerate.

gcc/testsuite/:
	* go.go-torture/execute/names-1.go: Stop using debug/xcoff, which
	is no longer externally visible.

From-SVN: r268084
2019-01-18 19:04:36 +00:00
Segher Boessenkool
225220d668 rs6000: Fix *movsi_from_df (PR88892)
The memory store instructions (stfs[u][x], stxssp[x]) can result in
garbage if the value to be stored isn't already a valid single
precision floating point number.  So we cannot use this here.


	PR target/88892
	* config/rs6000/rs6000.md (*movsi_from_df): Allow only register
	operands.

From-SVN: r268083
2019-01-18 19:01:56 +01:00
Ian Lance Taylor
8b248c17bd re PR libbacktrace/88890 (libbacktrace on 32-bit system with _FILE_OFFSET_BITS == 64)
PR libbacktrace/88890
	* mmapio.c (backtrace_get_view): Change size parameter to
	uint64_t.  Check that value fits in size_t.
	* read.c (backtrace_get_view): Likewise.
	* internal.h (backtrace_get_view): Update declaration.
	* elf.c (elf_add): Pass shstrhdr->sh_size to backtrace_get_view.

From-SVN: r268082
2019-01-18 17:13:59 +00:00
Marek Polacek
89ce81fbe1 re PR c++/86926 (ICE for a recursive generic lambda)
PR c++/86926
	* g++.dg/cpp1z/constexpr-lambda23.C: New test.

From-SVN: r268080
2019-01-18 16:42:57 +00:00
H.J. Lu
3a42e16dca Update PR middle-end/88587 tests
It is wrong to use -m32 in dg-options.  { target ia32 } should be used
instead.  Also add -fno-pic to g++.target/i386/pr88587.C since it is
invalid with PIC.

	PR middle-end/88587
	* g++.target/i386/pr88587.C (dg-do): Add { target ia32 }.
	(dg-options): Replace -m32 with -fno-pic.
	* gcc.target/i386/mvc13.c (dg-do): Add { target ia32 }.
	(dg-options): Remove -m32.

From-SVN: r268079
2019-01-18 06:33:46 -08:00
Richard Biener
649794ff57 re PR tree-optimization/88903 (wrong-code with SLP vectorized shift)
2019-01-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/88903
	* tree-vect-stmts.c (vectorizable_shift): Verify we see all
	scalar stmts a SLP shift amount is composed of when detecting
	shifts by scalars.

	* gcc.dg/vect/pr88903-1.c: New testcase.
	* gcc.dg/vect/pr88903-2.c: Likewise.

From-SVN: r268076
2019-01-18 13:13:21 +00:00
H.J. Lu
420183d996 c-family: Update unaligned adress of packed member check
Check unaligned pointer conversion and strip NOPS.

gcc/c-family/

	PR c/51628
	PR c/88664
	* c-common.h (warn_for_address_or_pointer_of_packed_member):
	Remove the boolean argument.
	* c-warn.c (check_address_of_packed_member): Renamed to ...
	(check_address_or_pointer_of_packed_member): This.  Also
	warn pointer conversion.
	(check_and_warn_address_of_packed_member): Renamed to ...
	(check_and_warn_address_or_pointer_of_packed_member): This.
	Also warn pointer conversion.
	(warn_for_address_or_pointer_of_packed_member): Remove the
	boolean argument.  Don't check pointer conversion here.

gcc/c

	PR c/51628
	PR c/88664
	* c-typeck.c (convert_for_assignment): Upate the
	warn_for_address_or_pointer_of_packed_member call.

gcc/cp

	PR c/51628
	PR c/88664
	* call.c (convert_for_arg_passing): Upate the
	warn_for_address_or_pointer_of_packed_member call.
	* typeck.c (convert_for_assignment): Likewise.

gcc/testsuite/

	PR c/51628
	PR c/88664
	* c-c++-common/pr51628-33.c: New test.
	* c-c++-common/pr51628-35.c: New test.
	* c-c++-common/pr88664-1.c: Likewise.
	* c-c++-common/pr88664-2.c: Likewise.
	* gcc.dg/pr51628-34.c: Likewise.

From-SVN: r268075
2019-01-18 05:05:18 -08:00
Richard Earnshaw
cab81ec045 PR target/88799 Add +mp and +sec extensions to ARMv7-a
Most armv7-a implementations support a number of basic extensions to
the architecture which are not particularly important to the compiler,
but can matter if code contains inline assembly.  This patch adds
support for these extensions, based on the capabilities that GAS
already provides for the appropriate CPUs.  For the purposes of
multilib selection we ignore these extensions entirely and map the
extended architecture versions down to the base versions we have
already support for.

gcc:
	PR target/88799
	* config/arm/arm-cpus.in (mp): New feature.
	(sec): New feature.
	(fgroup ARMv7ve): Add mp and sec features.
	(arch armv7-a): Add options to allow mp and sec extensions.
	(cpu generic-armv7-a): Add options to allow mp and sec extensions.
	(cpu cortex-a5, cpu cortex-7, cpu cortex-a9): Add mp and sec
	extenstions to the base architecture.
	(cpu cortex-a8): Add sec extension to the base architecture.
	(cpu marvell-pj4): Add mp and sec extensions to the base architecture.
	* config/arm/t-aprofile (MULTILIB_MATCHES): Map all armv7-a arch
	variants down to the base v7-a varaint.
	* config/arm/t-multilib (v7_a_arch_variants): New variable.
	* doc/invoke.texi (ARM Options): Add +mp and +sec to the list
	of permitted extensions for -march=armv7-a and for
	-mcpu=generic-armv7-a.

testsuite:
	* gcc.target/arm/multilib.exp (config "aprofile"): Add tests for
	mp and sec extensions to armv7-a.

From-SVN: r268072
2019-01-18 11:49:56 +00:00
Martin Liska
756721ba89 Bump version of __gcov_indirect_call_profiler function as there was ABI change.
2019-01-18  Martin Liska  <mliska@suse.cz>

	* params.def: Fix comment.
	* tree-profile.c (gimple_init_gcov_profiler): Bump function
	name.
	(gimple_gen_ic_func_profiler): Likewise.
2019-01-18  Martin Liska  <mliska@suse.cz>

	* gcc.dg/no_profile_instrument_function-attr-1.c: Update
	expected function name.
2019-01-18  Martin Liska  <mliska@suse.cz>

	* libgcov-profiler.c (__gcov_indirect_call_profiler_v2): Rename
	to ...
	(__gcov_indirect_call_profiler_v3): ... this.
	* libgcov.h (__gcov_indirect_call_profiler_v2): Likewise.
	(__gcov_indirect_call_profiler_v3): Likewise.
	* Makefile.in: Bump function name.

From-SVN: r268071
2019-01-18 11:32:53 +00:00
Martin Liska
d273c40a55 Update error message prefix in libgcov profiling.
2019-01-18  Martin Liska  <mliska@suse.cz>

	* libgcov-driver.c (GCOV_PROF_PREFIX): Define.
	(gcov_version): Use in gcov_error.
	(merge_one_data): Likewise.
	(dump_one_gcov): Likewise.

From-SVN: r268070
2019-01-18 11:31:45 +00:00
Martin Liska
be9d9fdbed Describe better version mismatch in libgcov driver.
2019-01-18  Martin Liska  <mliska@suse.cz>

	* libgcov-driver.c (gcov_version_string): New function.
	(gcov_version): Convert version integer into string.

From-SVN: r268069
2019-01-18 11:30:56 +00:00
Ramana Radhakrishnan
cd0b2d361d [AArch64] Add support for system register based stack protector canary access
2019-01-18  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        * config/aarch64/aarch64-opts.h (enum stack_protector_guard): New
        * config/aarch64/aarch64.c (aarch64_override_options_internal): Handle
        and put in error checks for stack protector guard options.
        (aarch64_stack_protect_guard): New.
        (TARGET_STACK_PROTECT_GUARD): Define.
        * config/aarch64/aarch64.md (UNSPEC_SSP_SYSREG): New.
        (reg_stack_protect_address<mode>): New.
        (stack_protect_set): Adjust for SSP_GLOBAL.
        (stack_protect_test): Likewise.
        * config/aarch64/aarch64.opt (-mstack-protector-guard-reg): New.
        (-mstack-protector-guard): Likewise.
        (-mstack-protector-guard-offset): Likewise.

From-SVN: r268068
2019-01-18 10:32:40 +00:00
Jakub Jelinek
d0bf921f6a re PR tree-optimization/86214 (Strongly increased stack usage)
PR tree-optimization/86214
	* tree-inline.h (struct copy_body_data): Add
	add_clobbers_to_eh_landing_pads member.
	* tree-inline.c (add_clobbers_to_eh_landing_pad): New function.
	(copy_edges_for_bb): Call it if EH edge destination is <
	id->add_clobbers_to_eh_landing_pads.  Fix a comment typo.
	(expand_call_inline): Set id->add_clobbers_to_eh_landing_pads
	if flag_stack_reuse != SR_NONE and clear it afterwards.

	* g++.dg/opt/pr86214-1.C: New test.
	* g++.dg/opt/pr86214-2.C: New test.

From-SVN: r268067
2019-01-18 11:07:27 +01:00
Christophe Lyon
6616a31808 [ARM][testsuite] follow-up to PR target/52813 and target/11807 fix.
2019-01-18  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/arm/pr77904.c: Add dg-warning for sp clobber.

From-SVN: r268066
2019-01-18 10:57:41 +01:00
Christophe Lyon
8b0cb6e188 PR target/85596 Add --with-multilib-list doc for aarch64
2019-01-18  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/85596
	* doc/install.texi (with-multilib-list): Document for aarch64.

From-SVN: r268065
2019-01-18 10:20:41 +01:00
Jakub Jelinek
f84c606775 re PR target/88734 (AArch64's ACLE intrinsics give an ICE instead of compile error when option mismatch.)
PR target/88734
	* config/arm/arm_neon.h: Fix #pragma GCC target syntax - replace
	(("..."))) with ("...").

From-SVN: r268064
2019-01-18 10:15:36 +01:00
Jakub Jelinek
05d256037d Reapply:
2018-12-15  Jakub Jelinek  <jakub@redhat.com>

	PR target/88489
	* gcc.target/i386/avx512vl-vfixupimmsd-2.c: New test.
	* gcc.target/i386/avx512vl-vfixupimmss-2.c: New test.

From-SVN: r268063
2019-01-18 10:14:18 +01:00
Sebastian Huber
2185e212e9 Document atomic fetch and nand
Copy code example for fetch and nand from "Legacy __sync Built-in
Functions for Atomic Memory Access" to "Built-in Functions for Memory
Model Aware Atomic Operations".

gcc/

	* doc/extend.texi (Built-in Functions for Memory Model Aware
	Atomic Operations): Document atomic fetch and nand.

From-SVN: r268062
2019-01-18 08:38:06 +00:00
Sebastian Huber
f6605c653c RTEMS/Ada: Remove RTEMS quirk
The new network stack (libbsd) supports IPv6.

gcc/ada

	* s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS.

From-SVN: r268061
2019-01-18 08:34:00 +00:00
Martin Liska
5928bc2ec0 Reset proper type on vector types (PR middle-end/88587).
2019-01-18  Martin Liska  <mliska@suse.cz>
	    Richard Biener  <rguenther@suse.de>

	PR middle-end/88587
	* cgraph.h (create_version_clone_with_body): Add new argument
	with attributes.
	* cgraphclones.c (cgraph_node::create_version_clone): Add
	DECL_ATTRIBUTES to a newly created decl.  And call
	valid_attribute_p so that proper cl_target_optimization_node
	is set for the newly created declaration.
	* multiple_target.c (create_target_clone): Set DECL_ATTRIBUTES
	for declaration.
	(expand_target_clones): Do not call valid_attribute_p, it must
	be already done.
	* tree-inline.c (copy_decl_for_dup_finish): Reset mode for
	vector types.
2019-01-18  Martin Liska  <mliska@suse.cz>

	PR middle-end/88587
	* g++.target/i386/pr88587.C: New test.
	* gcc.target/i386/mvc13.c: New test.

Co-Authored-By: Richard Biener <rguenther@suse.de>

From-SVN: r268060
2019-01-18 07:41:05 +00:00
Li Jia He
9c83c58712 Add self to MAINTAINERS
2019-01-18  Li Jia He  <helijia@gcc.gnu.org>

    * MAINTAINERS (Write After Approval): Add myself.

From-SVN: r268059
2019-01-18 05:37:27 +00:00
Jason Merrill
b0f422220a PR c++/86205 - ICE with ?: of throw and template-id.
My patch for 64372 removed a bogus lvalue-rvalue conversion for one arm of a
?: expression where the other arm is a throw.  But we still need to require
any overload to be resolved, even though we aren't getting that from
decay_conversion anymore.

	* pt.c (resolve_nondeduced_context_or_error): Split out from...
	* typeck.c (decay_conversion): ...here.
	* call.c (build_conditional_expr_1): Use it.

From-SVN: r268058
2019-01-17 22:58:22 -05:00
Ian Lance Taylor
aee6ed4a2c re PR go/88202 (FAIL: runtime/pprof)
PR go/88202
    runtime: in sigprof, skip to sigtrampgo if we don't find sigtramp
    
    Fixes https://gcc.gnu.org/PR88202
    
    Reviewed-on: https://go-review.googlesource.com/c/158218

From-SVN: r268057
2019-01-18 03:29:38 +00:00
Iain Buclaw
151a199f29 libphobos: Add Fiber/Thread support for StackGrowsUp.
The StackGrowsDown version being turned off for hppa targets.

After other fixes in the compiler, this allows core.thread unittests to
all pass, as well as the garbage collector to work correctly.

Backported from upstream druntime 2.084.

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

From-SVN: r268056
2019-01-18 01:51:36 +00:00