Commit Graph

173936 Commits

Author SHA1 Message Date
Martin Liska
3629ff8ad6 Use cgraph_node::dump_{asm_},name where possible.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* cgraph.c (cgraph_node::dump): Use ::dump_name or
	::dump_asm_name instead of (::name or ::asm_name).
	* cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
	* cgraphunit.c (walk_polymorphic_call_targets): Likewise.
	(analyze_functions): Likewise.
	(expand_all_functions): Likewise.
	* ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
	(propagate_bits_across_jump_function): Likewise.
	(dump_profile_updates): Likewise.
	(ipcp_store_bits_results): Likewise.
	(ipcp_store_vr_results): Likewise.
	* ipa-devirt.c (dump_targets): Likewise.
	* ipa-fnsummary.c (analyze_function_body): Likewise.
	* ipa-hsa.c (check_warn_node_versionable): Likewise.
	(process_hsa_functions): Likewise.
	* ipa-icf.c (sem_item_optimizer::merge_classes): Likewise.
	(set_alias_uids): Likewise.
	* ipa-inline-transform.c (save_inline_function_body): Likewise.
	* ipa-inline.c (recursive_inlining): Likewise.
	(inline_to_all_callers_1): Likewise.
	(ipa_inline): Likewise.
	* ipa-profile.c (ipa_propagate_frequency_1): Likewise.
	(ipa_propagate_frequency): Likewise.
	* ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
	(remove_described_reference): Likewise.
	* ipa-pure-const.c (worse_state): Likewise.
	(check_retval_uses): Likewise.
	(analyze_function): Likewise.
	(propagate_pure_const): Likewise.
	(propagate_nothrow): Likewise.
	(dump_malloc_lattice): Likewise.
	(propagate_malloc): Likewise.
	(pass_local_pure_const::execute): Likewise.
	* ipa-visibility.c (optimize_weakref): Likewise.
	(function_and_variable_visibility): Likewise.
	* ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
	(ipa_discover_variable_flags): Likewise.
	* lto-streamer-out.c (output_function): Likewise.
	(output_constructor): Likewise.
	* tree-inline.c (copy_bb): Likewise.
	* tree-ssa-structalias.c (ipa_pta_execute): Likewise.
	* varpool.c (symbol_table::remove_unreferenced_decls): Likewise.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* lto-partition.c (add_symbol_to_partition_1): Use ::dump_name or
	::dump_asm_name instead of (::name or ::asm_name).
	(lto_balanced_map): Likewise.
	(promote_symbol): Likewise.
	(rename_statics): Likewise.
	* lto.c (lto_wpa_write_files): Likewise.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* gcc.dg/ipa/ipa-icf-1.c: Update expected scanned output.
	* gcc.dg/ipa/ipa-icf-10.c: Likewise.
	* gcc.dg/ipa/ipa-icf-11.c: Likewise.
	* gcc.dg/ipa/ipa-icf-12.c: Likewise.
	* gcc.dg/ipa/ipa-icf-13.c: Likewise.
	* gcc.dg/ipa/ipa-icf-16.c: Likewise.
	* gcc.dg/ipa/ipa-icf-18.c: Likewise.
	* gcc.dg/ipa/ipa-icf-2.c: Likewise.
	* gcc.dg/ipa/ipa-icf-20.c: Likewise.
	* gcc.dg/ipa/ipa-icf-21.c: Likewise.
	* gcc.dg/ipa/ipa-icf-23.c: Likewise.
	* gcc.dg/ipa/ipa-icf-25.c: Likewise.
	* gcc.dg/ipa/ipa-icf-26.c: Likewise.
	* gcc.dg/ipa/ipa-icf-27.c: Likewise.
	* gcc.dg/ipa/ipa-icf-3.c: Likewise.
	* gcc.dg/ipa/ipa-icf-35.c: Likewise.
	* gcc.dg/ipa/ipa-icf-36.c: Likewise.
	* gcc.dg/ipa/ipa-icf-37.c: Likewise.
	* gcc.dg/ipa/ipa-icf-38.c: Likewise.
	* gcc.dg/ipa/ipa-icf-5.c: Likewise.
	* gcc.dg/ipa/ipa-icf-7.c: Likewise.
	* gcc.dg/ipa/ipa-icf-8.c: Likewise.
	* gcc.dg/ipa/ipa-icf-merge-1.c: Likewise.
	* gcc.dg/ipa/pr64307.c: Likewise.
	* gcc.dg/ipa/pr90555.c: Likewise.
	* gcc.dg/ipa/propmalloc-1.c: Likewise.
	* gcc.dg/ipa/propmalloc-2.c: Likewise.
	* gcc.dg/ipa/propmalloc-3.c: Likewise.

From-SVN: r280009
2020-01-08 15:30:24 +00:00
Tobias Burnus
c1030b5cd3 libgomp.texi: Fix typos, use https (actual change)
From-SVN: r280008
2020-01-08 16:00:39 +01:00
Tobias Burnus
df2c0d3620 libgomp.texi: Fix typos, use https.
From-SVN: r280007
2020-01-08 15:58:31 +01:00
Richard Biener
fb768529d2 re PR tree-optimization/93199 (Compile time hog in sink_clobbers)
2020-01-08  Richard Biener  <rguenther@suse.de>

	PR middle-end/93199
	* tree-eh.c (sink_clobbers): Update virtual operands for
	the first and last stmt only.  Add a dry-run capability.
	(pass_lower_eh_dispatch::execute): Perform clobber sinking
	after CFG manipulations and in RPO order to catch all
	secondary opportunities reliably.

From-SVN: r280006
2020-01-08 14:30:44 +00:00
Georg-Johann Lay
949f006254 re PR target/93182 ([avr] Add -nodevicespecs option.)
PR target/93182
	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.

From-SVN: r280005
2020-01-08 14:28:56 +00:00
Richard Biener
0f3072b5c3 re PR other/92997 (gcc.dg/torture/ftrapv-1.c fails starting with r279523)
2020-01-08  Richard Biener  <rguenther@suse.de>

	PR testsuite/92997
	* gcc.dg/torture/ftrapv-1.c (iaddv): Use noipa attribute.

From-SVN: r280003
2020-01-08 14:07:55 +00:00
Georg-Johann Lay
d672c0afbb * gcc/doc/install.texi: Typo.
From-SVN: r280002
2020-01-08 13:43:27 +00:00
Richard Biener
f74c4b2c44 re PR tree-optimization/93199 (Compile time hog in sink_clobbers)
2019-01-08  Richard Biener  <rguenther@suse.de>

	PR middle-end/93199
	c/
	* gimple-parser.c (c_parser_parse_gimple_body): Remove __PHI IFN
	permanently.

	* gimple-fold.c (rewrite_to_defined_overflow): Mark stmt modified.
	* tree-ssa-loop-im.c (move_computations_worker): Properly adjust
	virtual operand, also updating SSA use.
	* gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
	Update stmt after resetting virtual operand.
	(tree_loop_interchange::move_code_to_inner_loop): Likewise.

	* gimple-iterator.c (gsi_remove): When not removing the stmt
	permanently do not delink immediate uses or mark the stmt modified.

From-SVN: r280000
2020-01-08 12:49:14 +00:00
Martin Liska
d597b9445f Replace node->name/node->order with node->dump_name.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* ipa-fnsummary.c (dump_ipa_call_summary): Use symtab_node::dump_name.
	(ipa_call_context::estimate_size_and_time): Likewise.
	(inline_analyze_function): Likewise.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* lto-partition.c (lto_balanced_map): Use symtab_node::dump_name.

From-SVN: r279999
2020-01-08 11:58:49 +00:00
Martin Liska
4dfa3251b5 Use dump_asm_name for Callers/Calls in dump.
2020-01-08  Martin Liska  <mliska@suse.cz>

	* cgraph.c (cgraph_node::dump): Use systematically
	dump_asm_name.

From-SVN: r279998
2020-01-08 11:58:30 +00:00
Georg-Johann Lay
e3e131c9bb Add -nodevicespecs option for avr.
gcc/
	Add -nodevicespecs option for avr.

	PR target/93182
	* config/avr/avr.opt (-nodevicespecs): New driver option.
	* config/avr/driver-avr.c (avr_devicespecs_file): Only issue
	"-specs=device-specs/..." if that option is not set.
	* doc/invoke.texi (AVR Options) <-nodevicespecs>: Document.

From-SVN: r279995
2020-01-08 09:41:59 +00:00
Georg-Johann Lay
f30dd60766 Implement 64-bit double functions.
gcc/
	PR target/92055
	* config.gcc (tm_defines) [target=avr]: Support --with-libf7,
	--with-double-comparison.
	* doc/install.texi: Document them.
	* config/avr/avr-c.c (avr_cpu_cpp_builtins)
	<WITH_LIBF7_LIBGCC, WITH_LIBF7_MATH, WITH_LIBF7_MATH_SYMBOLS>
	<WITH_DOUBLE_COMPARISON>: New built-in defines.
	* doc/invoke.texi (AVR Built-in Macros): Document them.
	* config/avr/avr-protos.h (avr_float_lib_compare_returns_bool): New.
	* config/avr/avr.c (avr_float_lib_compare_returns_bool): New function.
	* config/avr/avr.h (FLOAT_LIB_COMPARE_RETURNS_BOOL): New macro.
libgcc/
	PR target/92055
	* config.host (tmake_file) [target=avr]: Add t-libf7,
	t-libf7-math, t-libf7-math-symbols as specified by --with-libf7=.
	* config/avr/t-avrlibc: Don't copy libgcc.a if there are modules
	depending on sizeof (double) or sizeof (long double).
	* config/avr/libf7: New folder.
libgcc/config/avr/libf7/
	PR target/92055
	* t-libf7: New file.
	* t-libf7-math: New file.
	* t-libf7-math-symbols: New file.
	* libf7-common.mk: New file.
	* libf7-asm-object.mk: New file.
	* libf7-c-object.mk: New file.
	* asm-defs.h: New file.
	* libf7.h: New file.
	* libf7.c: New file.
	* libf7-asm.sx: New file.
	* libf7-array.def: New file.
	* libf7-const.def: New file.
	* libf7-constdef.h: New file.
	* f7renames.sh: New script.
	* f7wraps.sh: New script.
	* f7-renames.h: New generated file.
	* f7-wraps.h: New generated file.

From-SVN: r279994
2020-01-08 09:31:07 +00:00
Richard Earnshaw
d5bc18085c arm: Fix rmprofile multilibs when architecture includes +mp or +sec (PR target/93188)
When only the rmprofile multilibs are built, compiling for armv7-a
should select the generic v7 multilibs.  This used to work before +sec
and +mp were added to the architecture options but it was broken by
that update.  This patch fixes those variants and adds some tests to
ensure that they remain fixed ;-)

	PR target/93188
	* config/arm/t-multilib (MULTILIB_MATCHES): Add rules to match
	armv7-a{+mp,+sec,+mp+sec} to appropriate armv7 multilib variants
	when only building rm-profile multilibs.

	* gcc.target/arm/multilib.exp: Add new tests for rm-profile only.

From-SVN: r279993
2020-01-08 09:29:02 +00:00
Jason Merrill
54b0c0f0e9 whitespace
From-SVN: r279989
2020-01-07 23:03:38 -05:00
Thomas Rodgers
9e3c1eb773 Rename condition_variable_any wait* methods to match current draft standard
2020-01-07  Thomas Rodgers  <trodgers@redhat.com>

	* include/std/condition_variable
	(condition_variable_any::wait_on): Rename to match current draft
	standard.
	(condition_variable_any::wait_on_until): Likewise.
	(condition_variable_any::wait_on_for): Likewise.
	* testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc:
	Adjust tests to account for renamed methods.

From-SVN: r279988
2020-01-08 03:00:40 +00:00
Feng Xue
42d73fa9d5 Find matched aggregate lattice for self-recursive CP (PR ipa/93084)
2020-01-08  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/93084
        * ipa-cp.c (self_recursively_generated_p): Find matched aggregate
        lattice for a value to check.
        (propagate_vals_across_arith_jfunc): Add an assertion to ensure
        finite propagation in self-recursive scc.

2020-01-08  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/93084
        * gcc.dg/ipa/ipa-clone-3.c: New test.

From-SVN: r279987
2020-01-08 02:55:00 +00:00
Luo Xiong Hu
709d7838e7 Partially revert ipa-inline caller_growth_limits
We need to revert one line of code change from r279942 due to
performance degression.

gcc/ChangeLog:

	2020-01-08  Luo Xiong Hu  <luoxhu@linux.ibm.com>

	PR middle-end/93189
	* ipa-inline.c (caller_growth_limits): Restore the AND.

From-SVN: r279986
2020-01-08 00:54:39 +00:00
Ian Lance Taylor
fc6dbd584b compiler: fix loopdepth tracking in array slicing expression in escape analysis
In the gc compiler, for slicing an array, its AST has an implicit
    address operation node. There isn't such node in the gofrontend
    AST. During the escape analysis, we create a fake node to mimic
    the gc compiler's behavior. For the fake node, the loopdepth was
    not tracked correctly, causing miscompilation. Since this is an
    address operation, do the same thing as we do for the address
    operator.
    
    Fixes golang/go#36404.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213643

From-SVN: r279984
2020-01-08 00:38:00 +00:00
GCC Administrator
fd9ca4c646 Daily bump.
From-SVN: r279983
2020-01-08 00:16:21 +00:00
Ian Lance Taylor
81f025b580 compiler, runtime: stop using __go_runtime_error
Use specific panic functions instead, which are mostly already in the
    runtime package.
    
    Also correct "defer nil" to panic when we execute the defer, rather
    than throw when we queue it.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213642

From-SVN: r279979
2020-01-07 23:13:24 +00:00
Michael Meissner
7010bcd1c8 Revert patch accidentily created on the wrong sandbox
From-SVN: r279973
2020-01-07 21:30:43 +00:00
Michael Meissner
56eb4c70ea Restore patch reverted on trunk instead of a branch
From-SVN: r279972
2020-01-07 21:29:11 +00:00
Michael Meissner
cdf77151aa Revert a patch from luoxhu@linux.ibm.com
From-SVN: r279971
2020-01-07 21:27:27 +00:00
François Dumont
6af8819be1 PR libstdc++/92124 fix incorrect container move assignment
* include/bits/stl_tree.h
	(_Rb_tree<>::_M_move_assign(_Rb_tree&, false_type)): Replace
	std::move_if_noexcept by std::move.
	* testsuite/23_containers/map/92124.cc: New.
	* testsuite/23_containers/set/92124.cc: New.

From-SVN: r279967
2020-01-07 21:01:37 +00:00
Paolo Carlini
87d3f828de init.c (build_new): Add location_t parameter and use it throughout.
/gcc/cp
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* init.c (build_new): Add location_t parameter and use it throughout.
	(build_raw_new_expr): Likewise.
	* parser.c (cp_parser_new_expression): Pass the combined_loc.
	* pt.c (tsubst_copy_and_build): Adjust call.
	* cp-tree.h: Update declarations.

/libcc1
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* libcp1plugin.cc (plugin_build_new_expr): Update build_new call.

/gcc/testsuite
2020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.old-deja/g++.bugs/900208_03.C: Check locations too.
	* g++.old-deja/g++.bugs/900519_06.C: Likewise.

From-SVN: r279963
2020-01-07 17:58:18 +00:00
Ian Lance Taylor
5561b41dd6 compiler: avoid write barrier for a[i] = a[i][:v]
This avoids generating a write barrier for code that appears in the
    Go1.14beta1 runtime package in (*pageAlloc).sysGrow:
        s.summary[l] = s.summary[l][:needIdxLimit]
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213558

From-SVN: r279962
2020-01-07 15:35:04 +00:00
Andrew Stubbs
0e159efc76 [amdgcn] Add more modes for vector comparisons
2020-01-07  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (VEC_1REG_INT_ALT): Delete iterator.
	(VEC_ALLREG_ALT): New iterator.
	(VEC_ALLREG_INT_MODE): New iterator.
	(VCMP_MODE): New iterator.
	(VCMP_MODE_INT): New iterator.
	(vec_cmpu<mode>di): Use VCMP_MODE_INT.
	(vec_cmp<u>v64qidi): New define_expand.
	(vec_cmp<mode>di_exec): Use VCMP_MODE.
	(vec_cmpu<mode>di_exec): New define_expand.
	(vec_cmp<u>v64qidi_exec): New define_expand.
	(vec_cmp<mode>di_dup): Use VCMP_MODE.
	(vec_cmp<mode>di_dup_exec): Use VCMP_MODE.
	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>): Rename ...
	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>): ... to this.
	(vcond<VEC_ALL1REG_MODE:mode><VEC_1REG_ALT:mode>_exec): Rename ...
	(vcond<VEC_ALLREG_MODE:mode><VEC_ALLREG_ALT:mode>_exec): ... to this.
	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>): Rename ...
	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>): ... to this.
	(vcondu<VEC_ALL1REG_MODE:mode><VEC_1REG_INT_ALT:mode>_exec): Rename ...
	(vcondu<VEC_ALLREG_MODE:mode><VEC_ALLREG_INT_MODE:mode>_exec): ... to
	this.
	* config/gcn/gcn.c (print_operand): Fix 8 and 16 bit suffixes.
	* config/gcn/gcn.md (expander): Add sign_extend and zero_extend.

From-SVN: r279961
2020-01-07 15:27:50 +00:00
Jason Merrill
bd65538abb PR c++/47877 - -fvisibility-inlines-hidden and member templates.
DECL_VISIBILITY_SPECIFIED is also true if an enclosing scope has explicit
visibility, and we don't want that to override -fvisibility-inlines-hidden.
So check for the attribute specifically on the function, like we already do
for template argument visibility restriction.

	* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
	explicit class visibility for a template.

From-SVN: r279960
2020-01-07 10:05:25 -05:00
Andrew Stubbs
66b01cc342 Disallow 'B' constraints on amdgcn addc/subb
2020-01-07  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/constraints.md (DA): Update description and match.
	(DB): Likewise.
	(Db): New constraint.
	* config/gcn/gcn-protos.h (gcn_inline_constant64_p): Add second
	parameter.
	* config/gcn/gcn.c (gcn_inline_constant64_p): Add 'mixed' parameter.
	Implement 'Db' mixed immediate type.
	* config/gcn/gcn-valu.md (addcv64si3<exec_vcc>): Rework constraints.
	(addcv64si3_dup<exec_vcc>): Delete.
	(subcv64si3<exec_vcc>): Rework constraints.
	(addv64di3): Rework constraints.
	(addv64di3_exec): Rework constraints.
	(subv64di3): Rework constraints.
	(addv64di3_dup): Delete.
	(addv64di3_dup_exec): Delete.
	(addv64di3_zext): Rework constraints.
	(addv64di3_zext_exec): Rework constraints.
	(addv64di3_zext_dup): Rework constraints.
	(addv64di3_zext_dup_exec): Rework constraints.
	(addv64di3_zext_dup2): Rework constraints.
	(addv64di3_zext_dup2_exec): Rework constraints.
	(addv64di3_sext_dup2): Rework constraints.
	(addv64di3_sext_dup2_exec): Rework constraints.

From-SVN: r279959
2020-01-07 14:35:21 +00:00
Andre Vieira
77aecac1b2 [testsuite][arm] xfail vect-epilogues for armbe
gcc/testsuite/ChangeLog:
2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* gcc.dg/vect/vect-epilogues.c: XFAIL for arm big endian.

From-SVN: r279958
2020-01-07 14:14:16 +00:00
Andre Vieira
084a454e4e [doc] Add missing documentation for existing target checks
gcc/ChangeLog:
2020-01-07  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	* doc/sourcebuild.texi (arm_little_endian, arm_nothumb): Documented
	existing target checks.

From-SVN: r279957
2020-01-07 14:11:57 +00:00
Ian Lance Taylor
b46e3849d5 compiler: avoid a couple of compiler crashes
These came up while building 1.14beta1 while the code was still invalid.
    The policy is to not bother committing invalid test cases that cause
    compiler crashes.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213537

From-SVN: r279956
2020-01-07 13:44:29 +00:00
Richard Biener
b11b9e29f5 install.texi: Bump minimal supported MPC version.
2020-01-07  Richard Biener  <rguenther@suse.de>

	* doc/install.texi: Bump minimal supported MPC version.

From-SVN: r279955
2020-01-07 12:39:00 +00:00
Richard Sandiford
ab341f5003 Add a generic lhd_simulate_enum_decl
Normally we only create SVE ACLE functions when arm_sve.h is included.
But for LTO we need to do it at start-up, so that the functions are
already defined when streaming in the LTO objects.

One hitch with doing that is that LTO doesn't yet implement the
simulate_enum_decl langhook.  This patch adds a simple default
implementation that it can use.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* langhooks-def.h (lhd_simulate_enum_decl): Declare.
	(LANG_HOOKS_SIMULATE_ENUM_DECL): Use it.
	* langhooks.c: Include stor-layout.h.
	(lhd_simulate_enum_decl): New function.
	* config/aarch64/aarch64-sve-builtins.cc (init_builtins): Call
	handle_arm_sve_h for the LTO frontend.
	(register_vector_type): Cope with null returns from pushdecl.

gcc/testsuite/
	* gcc.target/aarch64/sve/pcs/asm_4.c: New test.

From-SVN: r279954
2020-01-07 10:21:26 +00:00
Richard Sandiford
683e93d197 [AArch64] Use type attributes to mark types that use the SVE PCS
The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors", since the types use different ABIs.
Until now we've done that using pointer equality between the
TYPE_MAIN_VARIANT and the built-in SVE type.

However, as Richard B noted, that doesn't work well for LTO,
where we stream both GNU and SVE types from a file instead of
creating them directly.  We need a mechanism for distinguishing
the types using streamed type information.

This patch does that using a new type attribute.  This attribute
is only meant to be used for the built-in SVE types and shouldn't
be user-visible.  The patch tries to ensure this by including a space
in the attribute name, like we already do for things like "fn spec"
and "omp declare simd".

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64-protos.h (aarch64_sve::svbool_type_p)
	(aarch64_sve::nvectors_if_data_type): Replace with...
	(aarch64_sve::builtin_type_p): ...this.
	* config/aarch64/aarch64-sve-builtins.cc: Include attribs.h.
	(find_vector_type): Delete.
	(add_sve_type_attribute): New function.
	(lookup_sve_type_attribute): Likewise.
	(register_builtin_types): Add an "SVE type" attribute to each type.
	(register_tuple_type): Likewise.
	(svbool_type_p, nvectors_if_data_type): Delete.
	(mangle_builtin_type): Use lookup_sve_type_attribute.
	(builtin_type_p): Likewise.  Add an overload that returns the
	number of constituent vector and predicate registers.
	* config/aarch64/aarch64.c (aarch64_sve_argument_p): Delete.
	(aarch64_returns_value_in_sve_regs_p): Use aarch64_sve::builtin_type_p
	instead of aarch64_sve_argument_p.
	(aarch64_takes_arguments_in_sve_regs_p): Likewise.
	(aarch64_pass_by_reference): Likewise.
	(aarch64_function_value_1): Likewise.
	(aarch64_return_in_memory): Likewise.
	(aarch64_layout_arg): Likewise.

gcc/testsuite/
	* g++.target/aarch64/sve/acle/general-c++/mangle_5.C: New test.
	* gcc.target/aarch64/sve/pcs/asm_1.c: Likewise.
	* gcc.target/aarch64/sve/pcs/asm_2.c: Likewise.
	* gcc.target/aarch64/sve/pcs/asm_3.c: Likewise.

From-SVN: r279953
2020-01-07 10:18:14 +00:00
Richard Sandiford
c4b30920c7 Don't mangle attributes that have a space in their name
The SVE port needs to maintain a different type identity for
GNU vectors and "SVE vectors" even during LTO, since the types
use different ABIs.  The easiest way of doing that seemed to be
to use type attributes.  However, these type attributes shouldn't
be user-facing; they're just a convenient way of representing the
types internally in GCC.

There are already several internal-only attributes, such as "fn spec"
and "omp declare simd".  They're distinguished from normal user-facing
attributes by having a space in their name, which means that it isn't
possible to write them directly in C or C++.

Taking the same approach mostly works well for SVE.  The only snag
I've hit so far is that the new attribute needs to (and only exists to)
affect type identity.  This means that it would normally get included
in mangled names, to distinguish it from types without the attribute.

However, the SVE ABI specifies a separate mangling for SVE vector types,
rather than using an attribute mangling + a normal vector mangling.
So we need some way of suppressing the attribute mangling for this case.

There are currently no other target-independent or target-specific
internal-only attributes that affect type identity, so this patch goes
for the simplest fix of skipping mangling for attributes whose names
contain a space (which usually wouldn't give a valid symbol anyway).
Other options I thought about were:

(1) Also make sure that targetm.mangled_type returns nonnull.

(2) Check directly for the target-specific name.

(3) Add a new target hook.

(4) Add new information to attribute_spec.  This would be very invasive
    at this stage, but maybe we should consider replacing all the boolean
    fields with flags?  That should make the tables slightly easier to
    read and would make adding new flags much simpler in future.

2020-01-07  Richard Sandiford  <richard.sandiford@arm.com>

gcc/cp/
	* mangle.c (mangle_type_attribute_p): New function, split out from...
	(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
	that contain a space.

From-SVN: r279952
2020-01-07 10:15:43 +00:00
Jakub Jelinek
fb862fdfb5 re PR tree-optimization/93156 (abused nonnull attribute evokes new segfault in gcc 10 since Nov 4 commit, 0fb958ab8aa)
PR tree-optimization/93156
	* tree-ssa-ccp.c (bit_value_binop): For x * x note that the second
	least significant bit is always clear.

	* gcc.dg/tree-ssa/pr93156.c: New test.

From-SVN: r279951
2020-01-07 11:05:14 +01:00
Jakub Jelinek
f26916c2ac re PR tree-optimization/93118 (>>32<<32 is not always converted into &~0ffffffffull at the tree level)
PR tree-optimization/93118
	* match.pd ((x >> c) << c -> x & (-1<<c)): Add nop_convert?.  Add new
	simplifier with two intermediate conversions.

	* gcc.dg/tree-ssa/pr93118.c: New test.

From-SVN: r279950
2020-01-07 11:03:07 +01:00
Martin Liska
5c4177c508 Add Optimization keyword for TREE/RTL optimization passes.
2020-01-07  Martin Liska  <mliska@suse.cz>

	* params.opt: Add Optimization for various parameters.

From-SVN: r279949
2020-01-07 09:21:01 +00:00
Martin Liska
fa13d9ebdc Document cloning for the target_clone attribute.
2020-01-07  Martin Liska  <mliska@suse.cz>

	PR ipa/83411
	* doc/extend.texi: Explain cloning for target_clone
	attribute.

From-SVN: r279948
2020-01-07 09:18:46 +00:00
Martin Liska
a924bffba9 Make warn_inline Optimization option.
2020-01-07  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/92860
	* common.opt: Make in Optimization option
	as it is affected by -O0, which is an Optimization
	option.
	* tree-inline.c (tree_inlinable_function_p):
	Use opt_for_fn for warn_inline.
	(expand_call_inline): Likewise.
2020-01-07  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/92860
	* gcc.dg/pr92860-2.c: New test.

From-SVN: r279947
2020-01-07 09:15:38 +00:00
Martin Liska
a86689f5e9 Mark -free as Optimization option.
From-SVN: r279946
2020-01-07 09:12:35 +00:00
Martin Liska
5dbaaa20c9 Mark param_min_crossjump_insns with Optimization keyword.
2020-01-07  Martin Liska  <mliska@suse.cz>

    PR optimization/92860
    * params.opt: Mark param_min_crossjump_insns with Optimization
    keyword.

From-SVN: r279945
2020-01-07 09:10:37 +00:00
Jakub Jelinek
851817d85e re PR fortran/93162 (gcc/fortran/trans-openmp.c:2469:50: runtime error: load of value 145992800, which is not a valid value for type 'ar_type' since r279628)
PR fortran/93162
	* trans-openmp.c (gfc_trans_omp_clauses): Check for REF_ARRAY type
	before testing u.ar.type == AR_FULL.

From-SVN: r279944
2020-01-07 08:14:41 +01:00
Jakub Jelinek
f74f6092ac re PR c++/91369 (Implement P0784R7: constexpr new)
PR c++/91369
	* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
	member, initialize it to zero in ctor.
	(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
	a heap object.  Don't cache calls to functions which allocate some
	heap objects and don't deallocate them or deallocate some heap
	objects they didn't allocate.

	* g++.dg/cpp1y/constexpr-new.C: Expect an error explaining why
	static_assert failed for C++2a.
	* g++.dg/cpp2a/constexpr-new9.C: New test.

From-SVN: r279943
2020-01-07 08:13:50 +01:00
Luo Xiong Hu
6ac22177a0 ipa-inline: Adjust condition for caller_growth_limits
Inline should return failure either (newsize > param_large_function_insns)
OR (newsize > limit).  Sometimes newsize is larger than
param_large_function_insns, but smaller than limit, inline doesn't return
failure even if the new function is a large function.
Therefore, param_large_function_insns and param_large_function_growth should be
OR instead of AND, otherwise --param large-function-growth won't
work correctly with --param large-function-insns.

gcc/ChangeLog:

	2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>

	* ipa-inline-analysis.c (estimate_growth): Fix typo.
	* ipa-inline.c (caller_growth_limits): Use OR instead of AND.

From-SVN: r279942
2020-01-07 02:38:16 +00:00
Michael Meissner
1b02c8c34c Refactor some code for a future change.
2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
	helper function to return the valid addressing formats for a given
	hard register and mode.
	(rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask.

Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c	(revision 279912)
+++ gcc/config/rs6000/rs6000.c	(working copy)
@@ -6729,6 +6729,30 @@ rs6000_expand_vector_extract (rtx target
     }
 }
 
+/* Helper function to return an address mask based on a physical register.  */
+
+static addr_mask_type
+hard_reg_and_mode_to_addr_mask (rtx reg, machine_mode mode)
+{
+  unsigned int r = reg_or_subregno (reg);
+  addr_mask_type addr_mask;
+
+  gcc_assert (HARD_REGISTER_NUM_P (r));
+  if (INT_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_GPR];
+
+  else if (FP_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_FPR];
+
+  else if (ALTIVEC_REGNO_P (r))
+    addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_VMX];
+
+  else
+    gcc_unreachable ();
+
+  return addr_mask;
+}
+
 /* Adjust a memory address (MEM) of a vector type to point to a scalar field
    within the vector (ELEMENT) with a mode (SCALAR_MODE).  Use a base register
    temporary (BASE_TMP) to fixup the address.  Return the new memory address
@@ -6865,21 +6889,8 @@ rs6000_adjust_vec_address (rtx scalar_re
   if (GET_CODE (new_addr) == PLUS)
     {
       rtx op1 = XEXP (new_addr, 1);
-      addr_mask_type addr_mask;
-      unsigned int scalar_regno = reg_or_subregno (scalar_reg);
-
-      gcc_assert (HARD_REGISTER_NUM_P (scalar_regno));
-      if (INT_REGNO_P (scalar_regno))
-	addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_GPR];
-
-      else if (FP_REGNO_P (scalar_regno))
-	addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_FPR];
-
-      else if (ALTIVEC_REGNO_P (scalar_regno))
-	addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_VMX];
-
-      else
-	gcc_unreachable ();
+      addr_mask_type addr_mask
+	= hard_reg_and_mode_to_addr_mask (scalar_reg, scalar_mode);
 
       if (REG_P (op1) || SUBREG_P (op1))
 	valid_addr_p = (addr_mask & RELOAD_REG_INDEXED) != 0;

From-SVN: r279941
2020-01-07 01:47:22 +00:00
Michael Meissner
0a4c673c82 Update ChangeLog for last change
From-SVN: r279940
2020-01-07 01:37:04 +00:00
Michael Meissner
e5d3611ec3 Update 'Q' constraint documentation.
2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/constraints.md (Q constraint): Update
	documentation.
	* doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint
	documentation.

From-SVN: r279939
2020-01-07 01:36:17 +00:00
Michael Meissner
3d53551b88 Fix bad code of vector extract of PC-relative address with variable element #.
2020-01-06  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator):
	Use 'Q' for doing vector extract from memory.
	(vsx_extract_v4sf_var): Use 'Q' for doing vector extract from
	memory.
	(vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for
	doing vector extract from memory.
	(vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector
	extract from memory.

From-SVN: r279938
2020-01-07 01:34:19 +00:00