Commit Graph

185867 Commits

Author SHA1 Message Date
Bob Duff
b233916016 [Ada] Fix bug in if_expressions introduced by var-size nodes changes
gcc/ada/

	* gen_il-gen.adb (Setter_Needs_Parent): Add missing
	Then_Actions.  Fix self-contradictory comment.
	* exp_util.adb (Insert_Actions): Minor comment improvments.
2021-06-15 06:19:21 -04:00
Arnaud Charlet
f1e93d3f1a [Ada] Add support for folding more and/or expressions
gcc/ada/

	* sem_eval.adb (Eval_Logical_Op, Test_Expression_Is_Foldable):
	Add support for folding more "and"/"or" expressions.
	* exp_util.adb (Side_Effect_Free): Fix handling of membership
	tests.
2021-06-15 06:19:20 -04:00
Piotr Trojanek
69558e562c [Ada] Replace repeated calls by references to a local object
gcc/ada/

	* sem_res.adb (Resolve_Actual): Replace repeated calls to
	"Etype (F)" with references to "F_Typ", which keeps the results
	of exactly that call.
2021-06-15 06:19:19 -04:00
Bob Duff
5fdd694a74 [Ada] Variable-sized node types: improve error messages
gcc/ada/

	* gen_il-gen.adb (To_Bit_Offset): Use 'Base to avoid overflow in
	computations in Last_Bit when Offset = 'Last.
	(Choose_Offset): Give a better error message when we run out of
	fields.  In particular, point out that
	Gen_IL.Internals.Bit_Offset'Last needs to be increased.
2021-06-15 06:19:18 -04:00
Bob Duff
a7cadd1860 [Ada] Variable-sized node types -- cleanup
gcc/ada/

	* atree.ads, einfo-utils.ads, einfo-utils.adb, fe.h, gen_il.adb,
	gen_il.ads, gen_il-gen-gen_entities.adb,
	gen_il-gen-gen_nodes.adb, sem_ch12.adb, sem_ch3.adb,
	sem_util.adb, sinfo-utils.ads, treepr.adb, types.ads: Clean up
	??? comments and other comments.
	* atree.adb: Clean up ??? comments and other comments.
	(Validate_Node): Fix bug: "Off_0 (N) < Off_L (N)"
	should be "Off_0 (N) <= Off_L (N)".
	* gen_il-gen.adb, gen_il-gen.ads: Clean up ???
	comments and other comments.  Add support for getter-specific
	and setter-specific preconditions.  Detect the error of putting
	a field in the wrong subrange.  Misc cleanup.
	(Node_Field vs. Entity_Field): Clean up Nmake.  Improve
	comments.
	* gen_il-utils.ads: Misc cleanup. Move...
	* gen_il-internals.ads: ... here.
	* gen_il-utils.adb: Misc cleanup. Move...
	* gen_il-internals.adb: ... here.
	* gen_il-fields.ads: Move Was_Default_Init_Box_Association,
	which was in the wrong subrange.  Add comments.  Misc cleanup.
	* gen_il-types.ads: Add Named_Access_Kind.
	* sinfo-cn.adb: Clean up ??? comments and other comments.
	Remove redundant assertions.
	* einfo.ads, sinfo.ads: Clean up ??? comments and other
	comments.  Remove all the comments indicating field offsets.
	These are obsolete now that Gen_IL computes the offsets
	automatically.
2021-06-15 06:19:16 -04:00
Arnaud Charlet
81e68a1954 [Ada] Rename Ada 202* to Ada 2022
gcc/ada/

	* einfo.ads, errout.adb, errout.ads, exp_aggr.adb, exp_ch5.adb,
	exp_ch6.adb, exp_ch8.adb, exp_ch9.adb, exp_imgv.adb,
	exp_put_image.adb, fe.h, impunit.adb, impunit.ads,
	libgnat/a-cobove.ads, libgnat/a-convec.ads, opt.ads,
	par-ch12.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
	par-ch6.adb, par-prag.adb, par-util.adb, scans.ads, scng.adb,
	sem_aggr.adb, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
	sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb,
	sem_res.adb, sem_type.adb, sem_util.adb, sem_util.ads,
	sinfo.ads, snames.ads-tmpl, sprint.adb, switch-c.adb, usage.adb,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	gcc-interface/trans.c: Update all references to Ada 2020 to Ada
	2022. Rename pragma Ada_2020 to Ada_2022.  Update documentation
	accordingly.
	* gnat_ugn.texi, gnat_rm.texi: Regenerate.
2021-06-15 06:19:14 -04:00
Steve Baird
4dbdeeb889 [Ada] Avoid inappropriate error messages regarding aggregates and variant parts
gcc/ada/

	* sem_util.adb (Gather_Components): Factor the test that was
	already being used to govern emitting a pre-Ada_2020 error
	message into an expression function,
	OK_Scope_For_Discrim_Value_Error_Messages. Call that new
	function in two places: the point where the same test was being
	performed previously, and in governing emission of a newer
	Ada_2020 error message. In both cases, the out-mode parameter
	Gather_Components.Report_Errors is set to True even if no error
	messages are generated within Gather_Components.
	* sem_util.ads: Correct a comment.
2021-06-15 06:19:13 -04:00
Richard Kenner
44d27e8e73 [Ada] Add more initialization of Stored_Constraint
gcc/ada/

	* sem_ch3.adb (Array_Type_Declaration, Build_Derived_Type):
	Reinitialize Stored_Constraint when needed.
	(Set_Modular_Size): Likewise.
	* atree.adb: (Check_Vanishing_Fields): Add node id to debugging
	information.
2021-06-15 06:19:11 -04:00
Bob Duff
a5db70e78a [Ada] Fix bug in subtype of private type with invariants
gcc/ada/

	* sem_util.adb (Propagate_Invariant_Attributes): Call
	Set_Has_Own_Invariants on the base type, because these are
	Base_Type_Only. The problem is that the base type of a type is
	indeed a base type when Set_Base_Type is called, but then the
	type is mutated into a subtype in rare cases.
	* atree.ads, atree.adb (Is_Entity): Export. Correct subtype of
	parameter in body.
	* gen_il-gen.adb: Improve getters so that "Pre => ..." can refer
	to the value of the field. Put Warnings (Off) on some with
	clauses that are not currently used, but might be used by such
	Pre's.
2021-06-15 06:19:10 -04:00
Piotr Trojanek
ed17bbe3c3 [Ada] Robust switching from incomplete to access types
gcc/ada/

	* sem_ch3.adb (Access_Type_Declaration): Add comments to explain
	the ordering of Mutate_Kind and Set_Directly_Designated_Type;
	remove temporary setting of Ekind to E_Access_Type for building
	_master objects, since now the Ekind is already set to its final
	value. Move repeated code into Setup_Access_Type routine and use
	it so that Process_Subtype is executed before mutating the kind
	of the type entity.
	* gen_il-gen-gen_entities.adb (Gen_Entities): Remove
	Directly_Designated_Type from E_Void, E_Private_Record,
	E_Limited_Private_Type and Incomplete_Kind; now it only belongs
	to Access_Kind entities.
	* sem_util.adb: Minor reformatting.
2021-06-15 06:19:09 -04:00
Jakub Jelinek
008153c843 expr: Fix up VEC_PACK_TRUNC_EXPR expansion [PR101046]
The following testcase ICEs, because we have a mode mismatch.
VEC_PACK_TRUNC_EXPR's operands have different modes from the result
(same vector mode size but twice as large element),
but we were passing non-NULL subtarget with the mode of the result
to the expansion of its arguments, so the VEC_PERM_EXPR in one of the
operands which had V8SImode operands and result had V16HImode target.

Fixed by clearing the subtarget if we are changing mode.

2021-06-15  Jakub Jelinek  <jakub@redhat.com>

	PR target/101046
	* expr.c (expand_expr_real_2) <case VEC_PACK_FIX_TRUNC_EXPR,
	case VEC_PACK_TRUNC_EXPR>: Clear subtarget when changing mode.

	* gcc.target/i386/pr101046.c: New test.
2021-06-15 11:36:47 +02:00
Richard Biener
dfef1164b1 Handle multiple latches in irreducible region mark
The following makes irreducible region discovery handle multiple latches.

2021-06-14  Richard Biener  <rguenther@suse.de>

	* cfgloopanal.c (mark_irreducible_loops): Use a dominance
	check to identify loop latches.
	* cfgloop.c (verify_loop_structure): Likewise.
	* loop-init.c (apply_loop_flags): Allow marked irreducible
	regions even with multiple latches.
	* predict.c (rebuild_frequencies): Simplify.
2021-06-15 10:31:16 +02:00
Richard Biener
b10f895f41 Assert we have irreducible regions marked in the threader
This adds an assert that would fire if any thread path registry
user runs into the check that relies on such regions marked.

2021-06-15  Richard Biener  <rguenther@suse.de>

	* tree-ssa-threadupdate.c
	(jump_thread_path_registry::mark_threaded_blocks): Assert we
	have marked irreducible regions.
2021-06-15 10:29:27 +02:00
Robin Dapp
3fe5464537 testsuite: Fix Wattributes test cases for s390 and add new tests.
There are several FAILs because we have an s390-specific check for a
warning which is not necessary anymore.  Remove it.

Add a new test case that expects a warning about conflicting function
alignment.  This would fail on s390 before but most likely on other
targets as well so it can be a target-independent test.

Also, add a test to verify that we do not emit a note when specifying
conflicting alignment for the same declaration.  Need to explicitly
handle every dg-note because handling one disables dg-note pruning.

gcc/testsuite/ChangeLog:

	* c-c++-common/Wattributes.c: Remove s390-specific check and add
	new tests.
	* gcc.dg/Wattributes-6.c: Likewise.
2021-06-15 09:38:23 +02:00
Robin Dapp
ba2eef033e c-family: Copy DECL_USER_ALIGN even if DECL_ALIGN is similar.
When re-declaring a function with differing attributes DECL_USER_ALIGN
is usually not merged/copied when DECL_ALIGN is similar.  On s390 this
will cause a warning message not to be shown.  Similarly, we warned
about the wrong alignment when short-circuiting an alignment initialization in
common_handle_aligned_attribute ().

Fix this by copying DECL_USER_ALIGN even if DECL_ALIGN is similar as
well as getting rid of the short-circuited initialization.

gcc/c-family/ChangeLog:

	* c-attribs.c (common_handle_aligned_attribute): Remove short
	circuit and dead code.

gcc/c/ChangeLog:

	* c-decl.c (merge_decls): Copy DECL_USER_ALIGN if DECL_ALIGN is
	similar.

gcc/cp/ChangeLog:

	* decl.c (duplicate_decls): Likewise.
2021-06-15 09:12:55 +02:00
Xionghu Luo
327a6b55e1 rs6000: Fix test case failures by PR100085 [PR101020]
Tested pass, committing as obvious.

gcc/testsuite/ChangeLog:

2021-06-14  Xionghu Luo  <luoxhu@linux.ibm.com>

	PR target/101020
	* gcc.target/powerpc/float128-call.c: Adjust counts for be and le.
2021-06-14 20:05:36 -05:00
GCC Administrator
8dc48181af Daily bump. 2021-06-15 00:16:37 +00:00
Martin Sebor
d9f1466f88 Teach compute_objsize about placement new [PR100876].
Resolves:
PR c++/100876 - -Wmismatched-new-delete should understand placement new when it's not inlined

gcc/ChangeLog:

	PR c++/100876
	* builtins.c (gimple_call_return_array): Check for attribute fn spec.
	Handle calls to placement new.
	(ndecl_dealloc_argno): Avoid placement delete.

gcc/testsuite/ChangeLog:

	PR c++/100876
	* g++.dg/warn/Wmismatched-new-delete-4.C: New test.
	* g++.dg/warn/Wmismatched-new-delete-5.C: New test.
	* g++.dg/warn/Wstringop-overflow-7.C: New test.
	* g++.dg/warn/Wfree-nonheap-object-6.C: New test.
	* g++.dg/analyzer/placement-new.C: Prune out expected warning.
2021-06-14 16:48:42 -06:00
Jonathan Wakely
f9598d89a9 libstdc++: Fix noexcept-specifier for ranges::empty
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/ranges_base.h (ranges::empty): Check whether
	conversion to bool can throw.
	* testsuite/std/ranges/access/empty.cc: Check for correct
	noexcept-specifier.
2021-06-14 23:13:16 +01:00
Peter Bergner
20073534c0 rs6000: MMA builtin usage ICEs when used in a #pragma omp parallel and using -fopenmp [PR100777]
Using an MMA builtin within an openmp parallel code block, leads to an SSA
verification ICE on the temporaries we create while expanding the MMA builtins
at gimple time.  The solution is to use create_tmp_reg_or_ssa_name(), which
knows when to create either an SSA or register temporary.

2021-06-14  Peter Bergner  <bergner@linux.ibm.com>

gcc/
	PR target/100777
	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Use
	create_tmp_reg_or_ssa_name().

gcc/testsuite/
	PR target/100777
	* gcc.target/powerpc/pr100777.c: New test.
2021-06-14 16:55:18 -05:00
Andrew MacLeod
ecc5644fa3 Limit new value calculations to first order effects.
When utilzing poor values during propagation, we mostly care about values that
were undefined/processed directly used in calcualting the SSA_NAME being
processed.  2nd level derivations of such poor values rarely affect the
inital calculation.  Leave them to when they are directly encountered.

	* gimple-range-cache.cc (ranger_cache::ranger_cache): Adjust.
	(ranger_cache::enable_new_values): Set to specified value and
	return the old value.
	(ranger_cache::disable_new_values): Delete.
	(ranger_cache::fill_block_cache): Disable non 1st order derived
	poor values.
	* gimple-range-cache.h (ranger_cache): Adjust prototypes.
	* gimple-range.cc (gimple_ranger::range_of_expr): Adjust.
2021-06-14 17:06:32 -04:00
Jonathan Wakely
c37b5ddcc8 libstdc++: Fix common_reference for non-reference results [PR100894]
The result of COMMON-REF(A&, B&&) where they have no common reference
type should not be a reference. The implementation of COMMON-REF fails
to check that the result is a reference, so is well-formed when it
shouldn't be. This means that common_reference uses that result when it
shouldn't.

The fix is to reject the result of COMMON-REF(A, B) if it's not a
reference, so that common_reference falls through to the next case,
which uses COND-RES, which yields a non-reference result.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	PR libstdc++/100894
	* include/std/type_traits (__common_ref_impl<X&, Y&>): Only
	use the type if it's a reference.
	* testsuite/20_util/common_reference/100894.cc: New test.
2021-06-14 21:17:53 +01:00
Uros Bizjak
4986946f3b i386: Split V2HImode *punpckwd to SSE instruction [PR101058]
V2HImode *punpckwd should not be split to the insn that depends on
TARGET_MMX_WITH_SSE, since the later is disabled on 32bit targets.

Also return true early from ix86_vectorize_vec_perm_const when testing
with V2HI mode.  *punpckwd can be used to implement all permutations.

2021-06-14  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	PR target/101058
	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
	Return true early when testing with V2HImode.
	* config/i386/mmx.md (*punpckwd): Split to sse2_pshuflw_1.

gcc/testsuite/

	PR target/101058
	* gcc.target/i386/pr101058.c: New test.
2021-06-14 20:57:11 +02:00
Jonathan Wakely
93bfadf3a1 c-family: Add fix-it suggestions for more <stdlib.h> names [PR101052]
PR c++/101052

gcc/c-family/ChangeLog:

	* known-headers.cc (get_stdlib_header_for_name): Add known
	headers for EXIT_FAILURE, EXIT_SUCCESS, abort, atexit, calloc,
	exit, and getenv.

gcc/testsuite/ChangeLog:

	* g++.dg/spellcheck-stdlib.C: Add checks for <cstdlib> names.
	* gcc.dg/spellcheck-stdlib.c: Likewise.
2021-06-14 18:24:10 +01:00
Christophe Lyon
046a3beb16 arm: Auto-vectorization for MVE: add pack/unpack patterns
This patch adds vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>,
vec_pack_trunc_<mode> patterns for MVE.

It does so by moving the unpack patterns from neon.md to
vec-common.md, while adding them support for MVE. The pack expander is
derived from the Neon one (which in turn is renamed into
neon_quad_vec_pack_trunc_<mode>).

The patch introduces mve_vec_unpack<US>_lo_<mode> and
mve_vec_unpack<US>_hi_<mode> which are similar to their Neon
counterparts, except for the assembly syntax.

The patch introduces mve_vec_pack_trunc_lo_<mode> to avoid the need for a
zero-initialized temporary, which is needed if the
vec_pack_trunc_<mode> expander calls @mve_vmovn[bt]q_<supf><mode>
instead.

With this patch, we can now vectorize the 16 and 8-bit versions of
vclz and vshl, although the generated code could still be improved.
For test_clz_s16, we now generate
        vldrh.16        q3, [r1]
        vmovlb.s16   q2, q3
        vmovlt.s16   q3, q3
        vclz.i32  q2, q2
        vclz.i32  q3, q3
        vmovnb.i32      q1, q2
        vmovnt.i32      q1, q3
        vstrh.16        q1, [r0]
which could be improved to
        vldrh.16        q3, [r1]
	vclz.i16	q1, q3
        vstrh.16        q1, [r0]
if we could avoid the need for unpack/pack steps.

For reference, clang-12 generates:
	vldrh.s32       q0, [r1]
	vldrh.s32       q1, [r1, #8]
	vclz.i32        q0, q0
	vstrh.32        q0, [r0]
	vclz.i32        q0, q1
	vstrh.32        q0, [r0, #8]

2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): New pattern.
	(mve_vec_unpack<US>_hi_<mode>): New pattern.
	(@mve_vec_pack_trunc_lo_<mode>): New pattern.
	(mve_vmovntq_<supf><mode>): Prefix with '@'.
	* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move to
	vec-common.md.
	(vec_unpack<US>_lo_<mode>): Likewise.
	(vec_pack_trunc_<mode>): Rename to
	neon_quad_vec_pack_trunc_<mode>.
	* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): New
	pattern.
	(vec_unpack<US>_lo_<mode>): New.
	(vec_pack_trunc_<mode>): New.

	gcc/testsuite/
	* gcc.target/arm/simd/mve-vclz.c: Update expected results.
	* gcc.target/arm/simd/mve-vshl.c: Likewise.
	* gcc.target/arm/simd/mve-vec-pack.c: New test.
	* gcc.target/arm/simd/mve-vec-unpack.c: New test.
2021-06-14 16:39:21 +00:00
Tobias Burnus
12d13cf50f C/C++: Fix unused set var warning with omp_clause_affinity [PR100913]
PR c/100913
gcc/c/ChangeLog:

	* c-parser.c (c_parser_omp_clause_affinity): No need to set iterator
	var in the error case.

gcc/cp/ChangeLog:

	* parser.c (cp_parser_omp_clause_affinity): No need to set iterator
	var in the error case.
2021-06-14 16:49:24 +02:00
Richard Biener
788bb7edb3 tree-optimization/100934 - properly mark irreducible regions for DOM
The jump threading code requires marked irreducible regions for the
purpose of validating jump threading paths but DOM fails to provide
that resulting in mised number of iteration upper bounds clearing.

2021-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/100934
	* tree-ssa-dom.c (pass_dominator::execute): Properly
	mark irreducible regions.

	* gcc.dg/torture/pr100934.c: New testcase.
2021-06-14 16:37:23 +02:00
Jonathan Wakely
a40d2293a7 libstdc++: Only run Filesystem TS test if supported
libstdc++-v3/ChangeLog:

	* testsuite/experimental/filesystem/path/native/conv_c++23.cc:
	Add dg-require-filesystem-ts directive.
2021-06-14 15:10:56 +01:00
Jonathan Wakely
14f26c75d2 libstdc++: Fix std::any constraints [PR101034]
PR libstdc++/101034

libstdc++-v3/ChangeLog:

	* include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
	(any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
	to use lvalue.
	* testsuite/20_util/any/cons/101034.cc: New test.
2021-06-14 15:10:56 +01:00
Martin Liska
046198673c docs: Fix -Wno-cpp note
gcc/ChangeLog:

	* doc/invoke.texi: Put r{...} on the same line as @item.
2021-06-14 16:07:10 +02:00
Martin Liska
9b239c9147 docs: add missing newline
gcc/ChangeLog:

	* doc/invoke.texi: Add missing newline.
2021-06-14 16:04:13 +02:00
Martin Liska
f389f2a035 docs: remove extra '+' character in option listing.
gcc/ChangeLog:

	* doc/invoke.texi: Remove '+' charasters.
2021-06-14 15:36:38 +02:00
Jonathan Wakely
45fb3d45a4 libstdc++: Add explicit -std=gnu++17 option to test
This test has no -std option so when the testsuite is run with
-std=gnu++20 or later, this test will use that. The recent addition of
no_unique_address will cause it to FAIL, because that's a reserved word
after C++17. Add an explicit option, so that this test alays uses
exactly C++17.

libstdc++-v3/ChangeLog:

	* testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
	-std=gnu++17 option.
2021-06-14 14:04:45 +01:00
Jonathan Wakely
b76a529c09 libstdc++: Implement LWG 3465 for std::compare_partial_order_fallback [PR101056]
libstdc++-v3/ChangeLog:

	PR libstdc++/101056
	* libsupc++/compare (compare_partial_order_fallback): Add
	constraint using reversed parameter order, as per LWG 3465.
	* testsuite/18_support/comparisons/algorithms/fallback.cc:
	Adjust expected result.
2021-06-14 14:04:45 +01:00
Jonathan Wakely
e2c79b968f libstdc++: Change [cmp.alg] assertions to constraints
This moves the same_as<decay_t<_Tp>, decay_t<_Up>> checks from the
[cmp.alg] function bodies into their constraints.

Also add a test for the compare_xxx_order_fallback algorithms.

libstdc++-v3/ChangeLog:

	* libsupc++/compare (__decayed_same_as): New helper concept.
	(strong_order, weak_order, partial_order): Constrain with new
	concept instead of using static_assert.
	(compare_strong_order_fallback, compare_weak_order_fallback)
	(compare_partial_order_fallback): Likewise. Do not deduce return
	types. Remove redundant if-constexpr checks.
	* testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
2021-06-14 14:04:45 +01:00
Tobias Burnus
a893b26f73 Fortran: resolve.c - remove '*XCNEW' based nullifying
gcc/fortran/ChangeLog:

	* resolve.c (resolve_variable): Remove *XCNEW used to
	nullify nullified memory.
2021-06-14 14:44:23 +02:00
Claudiu Zissulescu
c4c47a84a1 arc: Add --with-fpu support for ARCv2 cpus
Support for a compile-time default FPU. The --with-fpu configuration
option is ignored if -mfpu compiler option is specified. The FPU
options are only available for ARCv2 cpus.

gcc/
2021-06-14  Claudiu Zissulescu  <claziss@synopsys.com>

	* config.gcc (arc): Add support for with_cpu option.
	* config/arc/arc.h (OPTION_DEFAULT_SPECS): Add fpu.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
2021-06-14 15:33:25 +03:00
Aaron Sawdey
831589c227 Do not check if SMS succeeds on powerpc
These tests have become unstable and SMS either succeeds or doesn't
depending on things like changes in instruction latency. Removing
the scan-rtl-dump-times checks for powerpc*-*-*.

gcc/testsuite

	* gcc.dg/sms-1.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-2.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-3.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-4.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-6.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-8.c: Remove scan-rtl-dump-times check.
	* gcc.dg/sms-10.c: Remove scan-rtl-dump-times check.
2021-06-14 06:58:45 -05:00
Jonathan Wakely
917efba2dd libstdc++: Use reserved name for attribute [PR101055]
The no_unique_address attribute is not a reserved name until C++20, so
to use it in C++11/14/17 modes we should use the __no_unique_address_
form. We already use that form when using the attribute, but not in the
__has_cpp_attribute check.

libstdc++-v3/ChangeLog:

	PR libstdc++/101055
	* include/std/tuple: Use reserved form of attribute name.
	* testsuite/17_intro/headers/c++2011/all_attributes.cc: Add
	check for no_unique_address.
	* testsuite/17_intro/headers/c++2014/all_attributes.cc:
	Likewise.
	* testsuite/17_intro/headers/c++2017/all_attributes.cc:
	Likewise.
2021-06-14 11:53:29 +01:00
Richard Biener
08ce1f4c50 tree-optimization/101031 - fix strlen opt invalidation logic
strlen opt uses ao_ref_init_from_ptr_and_size to prepare alias
queries to invalidate its knowledge about strings.  It constrains
the size using the number of known-nonzero chars and adds one
for a terminating nul - without knowing whether such nul exists
or even fits the object.  The latter is now a problem since the
oracle disambiguates an access of size two (as built so) against
a store to a plain char variable (where a terminating nul does not
fit).  The fix is to instead increment max_size but leave size to
the number of chars we know are accessed.

2021-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/101031
	* tree-ssa-strlen.c (maybe_invalidate): Increment max_size
	instead of size when accounting for a possibly string
	terminating nul.

	* gcc.dg/torture/pr101031.c: New testcase.
2021-06-14 11:13:55 +02:00
Martin Liska
44b1502070 evrp: fix AddressSanitizer: alloc-dealloc-mismatch
The fixed error is:

==21166==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete) on 0x60300000d900
    #0 0x7367d7 in operator delete(void*, unsigned long) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/libsanitizer/asan/asan_new_delete.cpp:172
    #1 0x3b82e6e in pointer_equiv_analyzer::~pointer_equiv_analyzer() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:161
    #2 0x3b83387 in hybrid_folder::~hybrid_folder() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:517
    #3 0x3b83387 in execute_early_vrp /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:686
    #4 0x1790611 in execute_one_pass(opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2567
    #5 0x1792003 in execute_pass_list_1 /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2656
    #6 0x1792029 in execute_pass_list_1 /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2657
    #7 0x179209f in execute_pass_list(function*, opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:2667
    #8 0x178a5f3 in do_per_function_toporder(void (*)(function*, void*), void*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:1773
    #9 0x1792fac in do_per_function_toporder(void (*)(function*, void*), void*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/plugin.h:191
    #10 0x1792fac in execute_ipa_pass_list(opt_pass*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/passes.c:3001
    #11 0xc525fc in ipa_passes /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2154
    #12 0xc525fc in symbol_table::compile() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2289
    #13 0xc5a096 in symbol_table::compile() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2269
    #14 0xc5a096 in symbol_table::finalize_compilation_unit() /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/cgraphunit.c:2537
    #15 0x1a7a17c in compile_file /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:482
    #16 0x69c758 in do_compile /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:2210
    #17 0x69c758 in toplev::main(int, char**) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/toplev.c:2349
    #18 0x6a932a in main /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/main.c:39
    #19 0x7ffff7820b34 in __libc_start_main ../csu/libc-start.c:332
    #20 0x6aa5fd in _start (/home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/objdir/gcc/cc1+0x6aa5fd)

0x60300000d900 is located 0 bytes inside of 32-byte region [0x60300000d900,0x60300000d920)
allocated by thread T0 here:
    #0 0x735ab7 in operator new[](unsigned long) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/libsanitizer/asan/asan_new_delete.cpp:102
    #1 0x3b82dac in pointer_equiv_analyzer::pointer_equiv_analyzer(gimple_ranger*) /home/marxin/BIG/buildbot/buildworker/marxinbox-gcc-asan/build/gcc/gimple-ssa-evrp.c:156

gcc/ChangeLog:

	* gimple-ssa-evrp.c (pointer_equiv_analyzer::~pointer_equiv_analyzer): Use delete[].
2021-06-14 10:22:36 +02:00
Aldy Hernandez
5a897a6b1b Pick up global ranges in ranger after inlining.
Ranger was not picking up global ranges because doing so could remove
__builtin_unreachable calls too early to the detriment of LTO.  However,
we can safely remove these calls after inlining.  This patch removes the
restriction and allows ranger to pick up global ranges under these
circumstances.

Tested on x86-64 Linux.

gcc/ChangeLog:

	* value-query.cc (gimple_range_global): Call get_range_global
	if called after inlining.
2021-06-14 08:19:21 +02:00
Michael Forney
ed14a956ae [PATCH] config: Backport "Rely less on internal symbols" (serial 68) to gettext.m4
intl
	* configure: Regenerated.
2021-06-13 22:30:09 -04:00
Michael Forney
3a01d8eec2 [PATCH] config: Backport "Rely less on internal symbols" (serial 69) to gettext.m4
config

	* gettext.m4 (AM_GNU_GETTEXT): Skip checks for the internal
	symbols _nl_msg_cat_cntr, _nl_domain_bindings, and
	_nl_expand_alias, if __GNU_GETTEXT_SUPPORTED_REVISION is defined.
	Backport of gettext serial 68 patch.
2021-06-13 22:26:03 -04:00
GCC Administrator
4e70c34e5c Daily bump. 2021-06-14 00:16:35 +00:00
Uros Bizjak
681143b9b9 i386: Improve variable permutation insn avoidance [PR101021]
Emit constant permutation insn directly from expand_vec_perm_shufb.

2021-06-13  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	PR target/101021
	* config/i386/i386-expand.c (expand_vec_perm_pshufb):
	Emit constant permutation insn directly from here.
2021-06-13 21:51:33 +02:00
Jason Merrill
291cd193f8 c: adjust [[maybe_unused]] testcase
Another testcase update needed for my r12-1405 commit.

gcc/testsuite/ChangeLog:

	* gcc.dg/c2x-attr-maybe_unused-1.c: Expect no warnings.
2021-06-13 14:19:06 -04:00
Trevor Saunders
3f207ab314 use range based for loops to iterate over vec<>
This changes users of FOR_EACH_VEC_ELT to use range based for loops,
where the index variables are otherwise unused.  As such the index
variables are all deleted, producing shorter and simpler code.

Signed-off-by: Trevor Saunders <tbsaunde@tbsaunde.org>

gcc/analyzer/ChangeLog:

	* call-string.cc (call_string::call_string): Use range based for
	to iterate over vec<>.
	(call_string::to_json): Likewise.
	(call_string::hash): Likewise.
	(call_string::calc_recursion_depth): Likewise.
	* checker-path.cc (checker_path::fixup_locations): Likewise.
	* constraint-manager.cc (equiv_class::equiv_class): Likewise.
	(equiv_class::to_json): Likewise.
	(equiv_class::hash): Likewise.
	(constraint_manager::to_json): Likewise.
	* engine.cc (impl_region_model_context::on_svalue_leak):
	Likewise.
	(on_liveness_change): Likewise.
	(impl_region_model_context::on_unknown_change): Likewise.
	* program-state.cc (sm_state_map::set_state): Likewise.
	* region-model.cc (test_canonicalization_4): Likewise.

gcc/ChangeLog:

	* attribs.c (find_attribute_namespace): Iterate over vec<> with
	range based for.
	* auto-profile.c (afdo_find_equiv_class): Likewise.
	* gcc.c (do_specs_vec): Likewise.
	(do_spec_1): Likewise.
	(driver::set_up_specs): Likewise.
	* gimple-loop-jam.c (any_access_function_variant_p): Likewise.
	* gimple-ssa-store-merging.c (compatible_load_p): Likewise.
	(imm_store_chain_info::try_coalesce_bswap): Likewise.
	(imm_store_chain_info::coalesce_immediate_stores): Likewise.
	(get_location_for_stmts): Likewise.
	* graphite-poly.c (print_iteration_domains): Likewise.
	(free_poly_bb): Likewise.
	(remove_gbbs_in_scop): Likewise.
	(free_scop): Likewise.
	(dump_gbb_cases): Likewise.
	(dump_gbb_conditions): Likewise.
	(print_pdrs): Likewise.
	(print_scop): Likewise.
	* ifcvt.c (cond_move_process_if_block): Likewise.
	* lower-subreg.c (decompose_multiword_subregs): Likewise.
	* regcprop.c (pass_cprop_hardreg::execute): Likewise.
	* sanopt.c (sanitize_rewrite_addressable_params): Likewise.
	* sel-sched-dump.c (dump_insn_vector): Likewise.
	* store-motion.c (store_ops_ok): Likewise.
	(store_killed_in_insn): Likewise.
	* timevar.c (timer::named_items::print): Likewise.
	* tree-cfgcleanup.c (cleanup_control_flow_pre): Likewise.
	(cleanup_tree_cfg_noloop): Likewise.
	* tree-data-ref.c (dump_data_references): Likewise.
	(print_dir_vectors): Likewise.
	(print_dist_vectors): Likewise.
	(dump_data_dependence_relations): Likewise.
	(dump_dist_dir_vectors): Likewise.
	(dump_ddrs): Likewise.
	(create_runtime_alias_checks): Likewise.
	(free_subscripts): Likewise.
	(save_dist_v): Likewise.
	(save_dir_v): Likewise.
	(invariant_access_functions): Likewise.
	(same_access_functions): Likewise.
	(access_functions_are_affine_or_constant_p): Likewise.
	(find_data_references_in_stmt): Likewise.
	(graphite_find_data_references_in_stmt): Likewise.
	(free_dependence_relations): Likewise.
	(free_data_refs): Likewise.
	* tree-inline.c (copy_debug_stmts): Likewise.
	* tree-into-ssa.c (dump_currdefs): Likewise.
	(rewrite_update_phi_arguments): Likewise.
	* tree-ssa-propagate.c (clean_up_loop_closed_phi): Likewise.
	* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
	Likewise.
	(vect_slp_analyze_node_dependences): Likewise.
	(vect_slp_analyze_instance_dependence): Likewise.
	(vect_record_base_alignments): Likewise.
	(vect_get_peeling_costs_all_drs): Likewise.
	(vect_peeling_supportable): Likewise.
	* tree-vectorizer.c (vec_info::~vec_info): Likewise.
	(vec_info::free_stmt_vec_infos): Likewise.

gcc/cp/ChangeLog:

	* constexpr.c (cxx_eval_call_expression): Iterate over vec<>
	with range based for.
	(cxx_eval_store_expression): Likewise.
	(cxx_eval_loop_expr): Likewise.
	* decl.c (wrapup_namespace_globals): Likewise.
	(cp_finish_decl): Likewise.
	(cxx_simulate_enum_decl): Likewise.
	* parser.c (cp_parser_postfix_expression): Likewise.
2021-06-13 12:08:01 -04:00
Jeff Law
8a7d54b1e1 [committed] More improvements to H8 logicals for test/compare elimination
gcc/
	* config/h8300/logical.md (<code>qi3_1<cczn>): New pattern.
	(andqi3_1<cczn>): Removed.
	(<ors>qi3_1): Do not split for IOR/XOR a single bit.
	(H8/SX bit logicals): Split out from other patterns.
	* config/h8300/multiply.md (mulqihi3_const<cczn>): Renamed from
	mulqihi3_const_clobber_flags.
	(mulqihi3<cczn>, mulhisi3_const<cczn>, mulhisi3<cczn>): Similarly
2021-06-13 11:18:14 -04:00
H.J. Lu
3f04e37825 x86: Replace ix86_red_zone_size with ix86_red_zone_used
Add red_zone_used to machine_function to track if red zone is used.
When expanding function prologue, set red_zone_used to true if red
zone is used.

gcc/

	PR target/101023
	* config/i386/i386.c (ix86_expand_prologue): Set red_zone_used
	to true if red zone is used.
	(ix86_output_indirect_jmp): Replace ix86_red_zone_size with
	ix86_red_zone_used.
	* config/i386/i386.h (machine_function): Add red_zone_used.
	(ix86_red_zone_size): Removed.
	(ix86_red_zone_used): New.
	* config/i386/i386.md (peephole2 patterns): Replace
	ix86_red_zone_size with ix86_red_zone_used.

gcc/testsuite/

	PR target/101023
	* g++.target/i386/pr101023a.C: New test.
	* g++.target/i386/pr101023b.C: Likewise.
2021-06-13 05:15:24 -07:00