Commit Graph

185442 Commits

Author SHA1 Message Date
Jakub Jelinek
c9a089cad1 Update copyright years in c++tools
While looking at PR100731, I have noticed the copyright years are 2020-ish
only.  This patch adds it to update-copyright.py and updates those.

2021-05-25  Jakub Jelinek  <jakub@redhat.com>

contrib/
	* update-copyright.py: Add c++tools.
c++tools/
	* Makefile.in: Update copyright year.
	* configure.ac: Likewise.
	* resolver.cc: Likewise.
	* resolver.h: Likewise.
	* server.cc: Likewise.
	(print_version): Update copyright notice date.
2021-05-25 11:12:03 +02:00
Richard Biener
316bdb2e89 middle-end/100727 - fix call expansion with WITH_SIZE_EXPR arg
call expansion used the result of get_base_address to switch between
ABIs - with get_base_address now never returning NULL we have to
re-instantiate the check in a more explicit way.  This also adjusts
mark_addressable to skip WITH_SIZE_EXPRs, consistent with how
build_fold_addr_expr handles it.

2021-05-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/100727
	* calls.c (initialize_argument_information): Explicitely test
	for WITH_SIZE_EXPR.
	* gimple-expr.c (mark_addressable): Skip outer WITH_SIZE_EXPR.
2021-05-25 11:11:02 +02:00
Jakub Jelinek
3a81735c1c openmp: Fix reduction clause handling on teams distribute simd [PR99928]
When a directive isn't combined with worksharing-loop, it takes much
simpler clause splitting path for reduction, and that one was missing
handling of teams when combined with simd.

2021-05-25  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/99928
gcc/c-family/
	* c-omp.c (c_omp_split_clauses): Copy reduction to teams when teams is
	combined with simd and not with taskloop or for.
gcc/testsuite/
	* c-c++-common/gomp/pr99928-8.c: Remove xfails from omp teams r21 and
	r28 checks.
	* c-c++-common/gomp/pr99928-9.c: Likewise.
	* c-c++-common/gomp/pr99928-10.c: Likewise.
libgomp/
	* testsuite/libgomp.c-c++-common/reduction-17.c: New test.
2021-05-25 11:07:01 +02:00
Martin Liska
9aecba04f4 Fix sphinx-build warning.
RemovedInSphinx40Warning: app.add_lexer() API changed; Please give lexer class instead of instance

gcc/ada/ChangeLog:

	* doc/share/conf.py: Fix Sphinx 4.0.x error.
2021-05-25 10:55:36 +02:00
Geng Qi
f1185ea88a C-SKY: Add cases for csky fpuv3 instructions.
gcc/testsuite/ChangeLog:

	* gcc.target/csky/fpuv3/fpuv3.exp: New.
	* gcc.target/csky/fpuv3/fpv3_div.c: New.
	* gcc.target/csky/fpuv3/fpv3_fadd.c: New.
	* gcc.target/csky/fpuv3/fpv3_fdtos.c: New.
	* gcc.target/csky/fpuv3/fpv3_fftoi_rm.c: New.
	* gcc.target/csky/fpuv3/fpv3_fftoi_rz.c: New.
	* gcc.target/csky/fpuv3/fpv3_fhtos.c: New.
	* gcc.target/csky/fpuv3/fpv3_fitof.c: New.
	* gcc.target/csky/fpuv3/fpv3_fmov.c: New.
	* gcc.target/csky/fpuv3/fpv3_fmovi.c: New.
	* gcc.target/csky/fpuv3/fpv3_fmula.c: New.
	* gcc.target/csky/fpuv3/fpv3_fmuls.c: New.
	* gcc.target/csky/fpuv3/fpv3_fneg.c: New.
	* gcc.target/csky/fpuv3/fpv3_fnmula.c: New.
	* gcc.target/csky/fpuv3/fpv3_fnmuls.c: New.
	* gcc.target/csky/fpuv3/fpv3_fstod.c: New.
	* gcc.target/csky/fpuv3/fpv3_fstoh.c: New.
	* gcc.target/csky/fpuv3/fpv3_fsub.c: New.
	* gcc.target/csky/fpuv3/fpv3_fxtof.c: New.
	* gcc.target/csky/fpuv3/fpv3_h.c: New.
	* gcc.target/csky/fpuv3/fpv3_hs.c: New.
	* gcc.target/csky/fpuv3/fpv3_hsz.c: New.
	* gcc.target/csky/fpuv3/fpv3_hz.c: New.
	* gcc.target/csky/fpuv3/fpv3_ls.c: New.
	* gcc.target/csky/fpuv3/fpv3_lsz.c: New.
	* gcc.target/csky/fpuv3/fpv3_lt.c: New.
	* gcc.target/csky/fpuv3/fpv3_ltz.c: New.
	* gcc.target/csky/fpuv3/fpv3_max.c: New.
	* gcc.target/csky/fpuv3/fpv3_min.c: New.
	* gcc.target/csky/fpuv3/fpv3_mul.c: New.
	* gcc.target/csky/fpuv3/fpv3_mula.c: New.
	* gcc.target/csky/fpuv3/fpv3_muls.c: New.
	* gcc.target/csky/fpuv3/fpv3_ne.c: New.
	* gcc.target/csky/fpuv3/fpv3_nez.c: New.
	* gcc.target/csky/fpuv3/fpv3_recip.c: New.
	* gcc.target/csky/fpuv3/fpv3_sqrt.c: New.
	* gcc.target/csky/fpuv3/fpv3_unordered.c: New.
2021-05-25 16:51:24 +08:00
Tobias Burnus
d8f6ceb58e fortran/intrinsic.texi: Fix copy'n'paste errors and typos
gcc/fortran/ChangeLog:

	* intrinsic.texi (GERROR, GETARGS, GETLOG, NORM2, PARITY, RANDOM_INIT,
	RANDOM_NUMBER): Fix typos and copy'n'paste errors.

Co-Authored-By: Johannes Nendwich <a08727063@unet.univie.ac.at>
2021-05-25 09:26:07 +02:00
Geng Qi
d19a00c60c C-SKY: Separate FRAME_POINTER_REGNUM into FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM.
gcc/ChangeLog:

	* config/csky/csky.h (FRAME_POINTER_REGNUM): Use
	HARD_FRAME_POINTER_REGNUM and FRAME_POINTER_REGNUM instead of
	the signle definition. The signle definition may not work well
	at simplify_subreg_regno().
	(HARD_FRAME_POINTER_REGNUM): New.
	(ELIMINABLE_REGS): Add for HARD_FRAME_POINTER_REGNUM.
	* config/csky/csky.c (get_csky_live_regs, csky_can_eliminate,
	csky_initial_elimination_offset, csky_expand_prologue,
	csky_expand_epilogue): Add for HARD_FRAME_POINTER_REGNUM.
2021-05-25 14:07:21 +08:00
Geng Qi
62fa9cb24a C-SKY: Bug fix for bad setting of TARGET_DSP and TARGET_DIV.
gcc/ChangeLog:

	* config/csky/csky.c (csky_option_override):
	Init csky_arch_isa_features[] in advance, so TARGET_DSP
	and TARGET_DIV can be set well.
2021-05-25 14:07:20 +08:00
Geng Qi
b8a618539c C-SKY: Delete LO_REGS and HI_REGS, use HILO_REGS instead.
gcc/ChangeLog:

	* config/csky/constraints.md ("l", "h"): Delete.
	* config/csky/csky.h (reg_class, REG_CLASS_NAMES,
	REG_CLASS_CONTENTS):  Delete LO_REGS and HI_REGS.
	* config/csky/csky.c (regno_reg_classm,
	csky_secondary_reload, csky_register_move_cost):
	Use HILO_REGS instead of LO_REGS and HI_REGS.
2021-05-25 14:07:20 +08:00
Geng Qi
db92bd223e C-SKY: Add fpuv3 instructions and CK860 arch.
gcc/ChangeLog:

	* config/csky/constraints.md ("W"): New constriant for mem operand
	with base reg, index register.
	("Q"): Renamed and modified "csky_valid_fpuv2_mem_operand" to
	"csky_valid_mem_constraint_operand" to deal with both "Q" and "W"
	constraint.
	("Dv"): New constraint for const double value that can be used at
	fmovi instruction.
	* config/csky/csky-modes.def (HFmode): New mode.
	* config/csky/csky-protos.h (csky_valid_fpuv2_mem_operand): Rename
	to "csky_valid_mem_constraint_operand" and support new constraint
	"W".
	(csky_get_movedouble_length): New.
	(fpuv3_output_move): New.
	(fpuv3_const_double): New.
	* config/csky/csky.c (csky_option_override): New arch CK860 with fpv3.
	(decompose_csky_address): Refine.
	(csky_print_operand): New "CONST_DOUBLE" operand.
	(csky_output_move): Support fpv3 instructions.
	(csky_get_movedouble_length): New.
	(fpuv3_output_move): New.
	(fpuv3_const_double): New.
	(csky_emit_compare): Cover float comparsion.
	(csky_emit_compare_float): Refine.
	(csky_vaild_fpuv2_mem_operand): Rename to
	"csky_valid_mem_constraint_operand" and support new constraint "W".
	(ck860_rtx_costs): New.
	(csky_rtx_costs): Add the cost calculation of CK860.
	(regno_reg_class): New vregs for fpuv3.
	(csky_dbx_regno): Likewise.
	(csky_cpu_cpp_builtins): New builtin macro for fpuv3.
	(csky_conditional_register_usage): Suporrot fpuv3.
	(csky_dwarf_register_span): Suporrot fpuv3.
	(csky_init_builtins, csky_mangle_type): Support "__fp16" type.
	(ck810_legitimate_index_p): Support fp16.
	* config/csky/csky.h (TARGET_TLS): ADD CK860.
	(CSKY_VREG_P, CSKY_VREG_LO_P, CSKY_VREG_HI_P): Support fpuv3.
	(TARGET_SINGLE_FPU): Support fpuv3.
	(TARGET_SUPPORT_FPV3): New.
	(FIRST_PSEUDO_REGISTER): Change to 202 to hold the new fpuv3 registers.
	(FIXED_REGISTERS, CALL_REALLY_USED_REGISTERS, REGISTER_NAMES,
	 REG_CLASS_CONTENTS): Support fpuv3.
	* config/csky/csky.md (movsf): Move to cksy_insn_fpu.md and refine.
	(csky_movsf_fpv2): Likewise.
	(ck801_movsf): Likewise.
	(csky_movsf): Likewise.
	(movdf): Likewise.
	(csky_movdf_fpv2): Likewise.
	(ck801_movdf): Likewise.
	(csky_movdf): Likewise.
	(movsicc): Refine. Use "comparison_operatior" instead of
	"ordered_comparison_operatior".
	(addsicc): Likewise.
	(CSKY_FIRST_VFP3_REGNUM, CSKY_LAST_VFP3_REGNUM): New constant.
	(call_value_internal_vh): New.
	* config/csky/csky_cores.def (CK860): New arch and cpu.
	(fpv3_hf): New.
	(fpv3_hsf): New.
	(fpv3_sdf): New.
	(fpv3): New.
	* config/csky/csky_insn_fpu.md: Refactor. Separate all float patterns
	into emit-patterns and match-patterns, remain the emit-patterns here,
	and move the match-patterns to csky_insn_fpuv2.md or
	csky_insn_fpuv3.md.
	* config/csky/csky_insn_fpuv2.md: New file for fpuv2 instructions.
	* config/csky/csky_insn_fpuv3.md: New file and new patterns for fpuv3
	isntructions.
	* config/csky/csky_isa.def (fcr): New.
	(fpv3_hi): New.
	(fpv3_hf): New.
	(fpv3_sf): New.
	(fpv3_df): New.
	(CK860): New definition for ck860.
	* config/csky/csky_tables.opt (ck860): New processors ck860,
	ck860f. And new arch ck860.
	(fpv3_hf): New.
	(fpv3_hsf): New.
	(fpv3_hdf): New.
	(fpv3): New.
	* config/csky/predicates.md (csky_float_comparsion_operator): Delete
	"geu", "gtu", "leu", "ltu", which will never appear at float comparison.
	* config/csky/t-csky-elf: Support 860.
	* config/csky/t-csky-linux: Likewise.
	* doc/md.texi: Add "Q" and "W" constraints for C-SKY.
2021-05-25 14:07:20 +08:00
GCC Administrator
637569df03 Daily bump. 2021-05-25 00:16:53 +00:00
Ian Lance Taylor
358832c46a compiler: mark global variables whose address is taken
To implement this, change the backend to use flag bits for variables.

Fixes https://gcc.gnu.org/PR100537

	PR go/100537
	* go-gcc.cc (class Gcc_backend): Update methods that create
	variables to take a flags parameter.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/322129
2021-05-24 13:24:45 -07:00
François Dumont
2c43f5ec9d libstdc++: Limit allocation on iterator insertion in Hashtable [PR 96088]
When inserting into unordered_multiset or unordered_multimap first instantiate
the node to store and compute the hash code from it to avoid a potential
intermediate key_type instantiation.

When inserting into unordered_set or unordered_map check if invoking the hash
functor with container key_type is noexcept and invoking the same hash functor
with key part of the iterator value_type can throw. In this case create a
temporary key_type instance at Hashtable level and use it to compute the hash
code. This temporary instance is moved to the final storage location if needed.

libstdc++-v3/ChangeLog:

	PR libstdc++/96088
	* include/bits/hashtable_policy.h (_Select2nd): New.
	(_NodeBuilder<>): New.
	(_ReuseOrAllocNode<>::operator()): Use variadic template args.
	(_AllocNode<>::operator()): Likewise.
	* include/bits/hashtable.h
	(_Hashtable<>::__node_builder_t): New.
	(_Hashtable<>::_M_insert_unique<>(_Kt&&, _Arg&&, const _NodeGenerator&)):
	 New.
	(_Hashtable<>::_S_forward_key): New.
	(_Hashtable<>::_M_insert): Use latter.
	(_Hashtable<>::_M_insert(const_iterator, _Arg&&, const _NodeGenerator&, false_type)):
	Instantiate node first, compute hash code second.
	* testsuite/23_containers/unordered_map/96088.cc: New test.
	* testsuite/23_containers/unordered_multimap/96088.cc: New test.
	* testsuite/23_containers/unordered_multiset/96088.cc: New test.
	* testsuite/23_containers/unordered_set/96088.cc: New test.
	* testsuite/util/replacement_memory_operators.h
	(counter::_M_increment): New.
	(counter::_M_decrement): New.
	(counter::reset()): New.
2021-05-24 21:51:06 +02:00
Aaron Sawdey
a8764071f2 Fusion patterns for add-logical/logical-add
This patch modifies the function in genfusion.pl for generating
the logical-logical patterns so that it can also generate the
add-logical and logical-add patterns which are very similar.

gcc/ChangeLog:
	* config/rs6000/genfusion.pl (gen_logical_addsubf): Refactor to
	add generation of logical-add and add-logical fusion pairs.
	* config/rs6000/rs6000-cpus.def: Add new fusion to ISA 3.1 mask
	and powerpc mask.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Turn on
	logical-add and add-logical fusion by default.
	* config/rs6000/rs6000.opt: Add -mpower10-fusion-logical-add and
	-mpower10-fusion-add-logical options.
	* config/rs6000/fusion.md: Regenerate file.

gcc/testsuite/ChangeLog:
	* gcc.target/powerpc/fusion-p10-logadd.c: New file.
2021-05-24 14:46:59 -05:00
Aldy Hernandez
ca8cc8273c VARYING ranges of different sizes should not be equal.
VARYING ranges are just normal ranges that span the entire domain.  Such
ranges have had end-points for a few releases now, and the fact that the
legacy code was still treating all VR_VARYING the same was an oversight.

This patch fixes the oversight to match the multi-range behavior.

gcc/ChangeLog:

	* value-range.cc (irange::legacy_equal_p): Check type when
	comparing VR_VARYING types.
	(range_tests_legacy): Test comparing VARYING ranges of different
	sizes.
2021-05-24 21:41:54 +02:00
Patrick Palka
46ed811bcb libstdc++: Fix iterator caching inside range adaptors [PR100479]
This fixes two issues with our iterator caching as described in detail
in the PR.  Since we recently added the __non_propagating_cache class
template as part of r12-336 for P2328, this patch just rewrites the
problematic _CachedPosition partial specialization in terms of this
class template.

For the offset partial specialization, it's safe to propagate the cached
offset on copy/move, but we should still invalidate the cached offset in
the source object on move.

libstdc++-v3/ChangeLog:

	PR libstdc++/100479
	* include/std/ranges (__detail::__non_propagating_cache): Move
	definition up to before that of _CachedPosition.  Make base
	class _Optional_base protected instead of private.  Add const
	overload for operator*.
	(__detail::_CachedPosition): Rewrite the partial specialization
	for forward ranges as a derived class of __non_propagating_cache.
	Remove the size constraint on the partial specialization for
	random access ranges.  Add copy/move/copy-assignment/move-assignment
	members to the offset partial specialization for random
	access ranges that propagate the cached value but additionally
	invalidate it in the source object on move.
	* testsuite/std/ranges/adaptors/100479.cc: New test.
2021-05-24 15:24:44 -04:00
Jonathan Wakely
6fdc59f196 libstdc++: Qualify functions used in tests
These tests rely on ADL for some functions, probably unintentionally.
The calls only work because the iterator wrappers derive from
std::iterator and so namespace std is an associated namespace.

libstdc++-v3/ChangeLog:

	* testsuite/25_algorithms/inplace_merge/constrained.cc: Qualify
	call to ranges::next.
	* testsuite/25_algorithms/is_sorted/constrained.cc: Likewise.
	* testsuite/25_algorithms/is_sorted_until/constrained.cc:
	Likewise.
	* testsuite/25_algorithms/swap_ranges/1.cc: Qualify call to
	swap_ranges.
2021-05-24 18:42:09 +01:00
Tobias Burnus
0e3b3b77e1 OpenMP/Fortran: Handle polymorphic scalars in data-sharing FIRSTPRIVATE [PR86470]
gcc/fortran/ChangeLog:

	PR fortran/86470
	* trans-expr.c (gfc_copy_class_to_class): Add unshare_expr.
	* trans-openmp.c (gfc_is_polymorphic_nonptr,
	gfc_is_unlimited_polymorphic_nonptr): New.
	(gfc_omp_clause_copy_ctor, gfc_omp_clause_dtor): Handle
	polymorphic scalars.

libgomp/ChangeLog:

	PR fortran/86470
	* testsuite/libgomp.fortran/class-firstprivate-1.f90: New test.
	* testsuite/libgomp.fortran/class-firstprivate-2.f90: New test.
	* testsuite/libgomp.fortran/class-firstprivate-3.f90: New test.

gcc/testsuite/ChangeLog:

	PR fortran/86470
	* gfortran.dg/gomp/class-firstprivate-1.f90: New test.
	* gfortran.dg/gomp/class-firstprivate-2.f90: New test.
	* gfortran.dg/gomp/class-firstprivate-3.f90: New test.
	* gfortran.dg/gomp/class-firstprivate-4.f90: New test.
2021-05-24 16:50:51 +02:00
Wilco Dijkstra
b326f49521 AArch64: Enable fast shifts on Neoverse N1
Enable the fast shift feature in Neoverse N1 tuning - this means additions with
a shift left by 1-4 are as fast as addition. This improves multiply by constant
expansions, eg. x * 25 is now emitted using shifts rather than a multiply:

add w0, w0, w0, lsl 2
add w0, w0, w0, lsl 2

ChangeLog:
2020-09-11  Wilco Dijkstra  <wdijkstr@arm.com>

	* config/aarch64/aarch64.c (neoversen1_tunings):
	Enable AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
2021-05-24 15:00:42 +01:00
Wilco Dijkstra
fb0746f3a6 AArch64: Cleanup aarch64_classify_symbol
Use a GOT indirection for extern weak symbols instead of a literal - this is
the same as PIC/PIE and mirrors LLVM behaviour.  Ensure PIC/PIE use the same
offset limits for symbols that don't use the GOT.

Passes bootstrap and regress.

ChangeLog:
2021-04-27  Wilco Dijkstra  <wdijkstr@arm.com>

	* config/aarch64/aarch64.c (aarch64_classify_symbol): Use GOT for
	extern weak symbols.  Limit symbol offsets for non-GOT symbols with
	PIC/PIE.
2021-05-24 15:00:42 +01:00
Christophe Lyon
4eaf65ed6a arm: Auto-vectorization for MVE: vld4/vst4
This patch enables MVE vld4/vst4 instructions for auto-vectorization.
We move the existing expanders from neon.md and enable them for MVE,
calling the respective emitter.

2021-03-12  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/neon.md (vec_load_lanesxi<mode>)
	(vec_store_lanexoi<mode>): Move ...
	* config/arm/vec-common.md: here.

	gcc/testsuite/
	* gcc.target/arm/simd/mve-vld4.c: New test, derived from
	slp-perm-3.c
2021-05-24 13:38:09 +00:00
Christophe Lyon
5ba5e856f3 arm: Auto-vectorization for MVE: vld2/vst2
This patch enables MVE vld2/vst2 instructions for auto-vectorization.
We move the existing expanders from neon.md and enable them for MVE,
calling the respective emitter.

2021-03-12  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/neon.md (vec_load_lanesoi<mode>)
	(vec_store_lanesoi<mode>): Move ...
	* config/arm/vec-common.md: here.

	gcc/testsuite/
	* gcc.target/arm/simd/mve-vld2.c: New test, derived from
	slp-perm-2.c
2021-05-24 13:37:50 +00:00
Wang Liushuai
0f3cd532fa Do not load the thunk symbols.
gcc/lto/ChangeLog:

	* lto-dump.c (get_size): Fix the NPD error about the thunk symbol.
2021-05-24 10:09:54 +02:00
Martin Liska
9d38e096c5 gcc-changelog: Add note about ChangeLog entries
contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Add note that ChangeLog entries
	are added automatically.
	* gcc-changelog/test_email.py: Update test.
2021-05-24 09:18:44 +02:00
liuhongt
dc084c487e Fix ICE when lhs is NULL.
gcc/ChangeLog:
	PR target/100660
	* config/i386/i386.c (ix86_gimple_fold_builtin): Replacing
	stmt with GIMPLE_NOP when lhs doesn't exist.

gcc/testsuite/ChangeLog:
	PR target/100660
	* gcc.target/i386/pr100660.c: New test.
2021-05-24 09:21:21 +08:00
Andrew Pinski
1040a44aa2 Fix two testcases for ssa names which are more than 1 digit
phi-opt-10.c and phi-opt-7.c both depend on currently that some ssa name
versions are one digit long which is not always correct. This fixes the
problem by detecting digits rather than just using '.'.

Committed as obvious after a bootstrap/test.

Thanks,
Andrew Pinski

gcc/testsuite/ChangeLog
	* gcc.dg/tree-ssa/phi-opt-10.c: Use "\[0-9\]*" instead of '.'
	when matching ssa name version.
	* gcc.dg/tree-ssa/phi-opt-7.c: Likewise.
2021-05-24 01:11:15 +00:00
GCC Administrator
b94a5024d7 Daily bump. 2021-05-24 00:16:23 +00:00
Uros Bizjak
c01c433111 i386: Add push insns for 4-byte vectors [PR100722]
2021-05-23  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	PR target/100722
	* config/i386/mmx.md (*push<VI_32:mode>2_rex64):
	New instruction pattern.
	(*push<VI_32:mode>2): Ditto.
	(push splitter for SSE registers): New splitter.

gcc/testsuite/

	PR target/100722
	* gcc.target/i386/pr100722.c: New test.
2021-05-23 22:14:59 +02:00
Harald Anlauf
fe03f4fc95 Fortran: fix passing return value to class(*) dummy argument
gcc/fortran/ChangeLog:

	PR fortran/100551
	* trans-expr.c (gfc_conv_procedure_call): Adjust check for
	implicit conversion of actual argument to an unlimited polymorphic
	procedure argument.

gcc/testsuite/ChangeLog:

	PR fortran/100551
	* gfortran.dg/pr100551.f90: New test.
2021-05-23 20:51:14 +02:00
Martin Liska
a4dbd5cffa Revert "Add ChangeLogs for the previous commit."
This reverts commit 1160d9c1e4.
2021-05-23 14:19:08 +02:00
Martin Liska
6bf8847c73 Revert "PR98301 Add missing changelog entries."
This reverts commit c4771b3438.
2021-05-23 14:08:08 +02:00
Tobias Burnus
5d3ef9189a fortran/intrinsic.texi: Use proper variable name
gcc/fortran/ChangeLog:

	* intrinsic.texi (ATOMIC_ADD, ATOMIC_FETCH_ADD): Use the
	proper variable name in the description.
2021-05-23 11:56:39 +02:00
Andrew Pinski
1160d9c1e4 Add ChangeLogs for the previous commit. 2021-05-23 08:11:06 +00:00
Andrew Pinski
99b76adb94 Don't simplify (A & C) != 0 ? D : 0 for pointer types.
While rewriting part of PHI-OPT to use match-and-simplify,
I ran into a bug where this pattern in match.pd would hit
and would produce invalid gimple; a shift of a pointer type.

This just disables this simplification for pointer types similarly
to what is already done in PHI-OPT for the generic A ? D : 0 case.

OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.

Thanks,
Andrew Pinski

2021-5-23  Andrew Pinski  <apinski@marvell.com>

gcc/
	* match.pd ((A & C) != 0 ? D : 0): Limit to non pointer types.

gcc/testsuite/
	* gcc.dg/gimplefe-45.c: New test.
2021-05-23 08:08:14 +00:00
GCC Administrator
15d30d2f20 Daily bump. 2021-05-23 00:16:24 +00:00
Andre Vehreschild
c4771b3438 PR98301 Add missing changelog entries. 2021-05-22 13:36:31 +02:00
Andre Vehreschild
26ca6dbda2 Steve Kargl <kargl@gcc.gnu.org>
PR fortran/98301 - random_init() is broken

Correct implementation of random_init() when -fcoarray=lib is given.

gcc/fortran/ChangeLog:

	PR fortran/98301
	* trans-decl.c (gfc_build_builtin_function_decls): Move decl.
	* trans-intrinsic.c (conv_intrinsic_random_init): Use bool for
	lib-call of caf_random_init instead of logical (4-byte).
	* trans.h: Add tree var for random_init.

libgfortran/ChangeLog:

	PR fortran/98301
	* caf/libcaf.h (_gfortran_caf_random_init): New function.
	* caf/single.c (_gfortran_caf_random_init): New function.
	* gfortran.map: Added fndecl.
	* intrinsics/random_init.f90: Implement random_init.
2021-05-22 13:27:42 +02:00
Thomas Schwinge
3050a1a182 [OpenACC privatization] Prune uninteresting/varying diagnostics in 'libgomp.oacc-fortran/privatized-ref-2.f90'
Minor fix-up for my recent commit 11b8286a83
"[OpenACC privatization] Largely extend diagnostics and corresponding testsuite
coverage [PR90115]".

	libgomp/
	PR testsuite/90115
	* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Prune
	uninteresting/varying diagnostics.

Reported-by: Sunil K Pandey <skpandey@sc.intel.com>
2021-05-22 10:37:17 +02:00
Aaron Sawdey
5e28089157 Fix rs6000 p10 fusion patterns with old attr type names
Somehow I managed to check in a version of genfusion.pl this
afternoon that was not updated to the new insn attr type names.
Committing as obvious and to make the code match what was posted
and reviewed.

gcc/
	* config/rs6000/genfusion.pl (gen_addadd): Fix incorrect attr types.
	* config/rs6000/fusion.md: Regenerate file.
2021-05-21 21:59:39 -05:00
GCC Administrator
2832d51b38 Daily bump. 2021-05-22 00:16:29 +00:00
Aaron Sawdey
842a055189 combine patterns for add-add fusion
This patch adds a function to genfusion.pl to add a couple
more patterns so combine can do fusion of pairs of add and
vaddudm instructions.

gcc/ChangeLog:

	* config/rs6000/genfusion.pl (gen_addadd): New function.
	* config/rs6000/fusion.md: Regenerate file.
	* config/rs6000/rs6000-cpus.def: Add
	OPTION_MASK_P10_FUSION_2ADD to masks.
	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Handle default value of OPTION_MASK_P10_FUSION_2ADD.
	* config/rs6000/rs6000.opt: Add -mpower10-fusion-2add.

gcc/testsuite/ChangeLog:

	* gcc.target/powerpc/fusion-p10-addadd.c: New file.
2021-05-21 16:20:11 -05:00
Aaron Sawdey
bdc7162351 Test cases for p10 fusion patterns
This adds some test cases to make sure that the combine patterns for p10
fusion are working.

gcc/testsuite/ChangeLog:
	* gcc.target/powerpc/fusion-p10-ldcmpi.c: New file.
	* gcc.target/powerpc/fusion-p10-2logical.c: New file.
2021-05-21 16:18:53 -05:00
Jakub Jelinek
b5c1c7a96b openmp: Fix up firstprivate+lastprivate clause handling [PR99928]
The C/C++ clause splitting happens very early during construct parsing,
but only the FEs later on handle possible instantiations, non-static
member handling and array section lowering.
In the OpenMP 5.0/5.1 rules, whether firstprivate is added to combined
target depends on whether it isn't also mentioned in lastprivate or map
clauses, but unfortunately I think such checks are much better done only
when the FEs perform all the above mentioned changes.
So, this patch arranges for the firstprivate clause to be copied or moved
to combined target construct (as before), but sets flags on that clause,
which tell the FE *finish_omp_clauses and the gimplifier it has been added
only conditionally and let the FEs and gimplifier DTRT for these.

2021-05-21  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/99928
gcc/
	* tree.h (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET): Define.
	* gimplify.c (enum gimplify_omp_var_data): Fix up
	GOVD_MAP_HAS_ATTACHMENTS value, add GOVD_FIRSTPRIVATE_IMPLICIT.
	(omp_lastprivate_for_combined_outer_constructs): If combined target
	has GOVD_FIRSTPRIVATE_IMPLICIT set for the decl, change it to
	GOVD_MAP | GOVD_SEEN.
	(gimplify_scan_omp_clauses): Set GOVD_FIRSTPRIVATE_IMPLICIT for
	firstprivate clauses with OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT.
	(gimplify_adjust_omp_clauses): For firstprivate clauses with
	OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT either clear that bit and
	OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET too, or remove it and
	let it be replaced by implicit map clause.
gcc/c-family/
	* c-omp.c (c_omp_split_clauses): Set OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT
	on firstprivate clause copy going to target construct, and for
	target simd set also OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET bit.
gcc/c/
	* c-typeck.c (c_finish_omp_clauses): Move firstprivate clauses with
	OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT to the end of the chain.  Don't error
	if a decl is mentioned both in map clause and in such firstprivate
	clause unless OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET is also set.
gcc/cp/
	* semantics.c (finish_omp_clauses): Move firstprivate clauses with
	OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT to the end of the chain.  Don't error
	if a decl is mentioned both in map clause and in such firstprivate
	clause unless OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT_TARGET is also set.
gcc/testsuite/
	* c-c++-common/gomp/pr99928-3.c: Remove all xfails.
	* c-c++-common/gomp/pr99928-15.c: New test.
2021-05-21 21:16:21 +02:00
Jakub Jelinek
0c6e792dd5 openmp: Fix up handling of implicit lastprivate on outer constructs for implicit linear and lastprivate IVs [PR99928]
This patch fixes the handling of lastprivate propagation to outer combined/composite
leaf constructs from implicit linear or lastprivate clauses on simd IVs and adds missing
testsuite coverage for explicit and implicit lastprivate on simd IVs.

2021-05-21  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/99928
	* gimplify.c (omp_lastprivate_for_combined_outer_constructs): New
	function.
	(gimplify_scan_omp_clauses) <case OMP_CLAUSE_LASTPRIVATE>: Use it.
	(gimplify_omp_for): Likewise.

	* c-c++-common/gomp/pr99928-6.c: Remove all xfails.
	* c-c++-common/gomp/pr99928-13.c: New test.
	* c-c++-common/gomp/pr99928-14.c: New test.
2021-05-21 21:13:06 +02:00
Thomas Schwinge
325aa13996 [OpenACC privatization] Reject 'static', 'external' in blocks [PR90115]
gcc/
	PR middle-end/90115
	* omp-low.c (oacc_privatization_candidate_p): Reject 'static',
	'external' in blocks.
	gcc/testsuite/
	PR middle-end/90115
	* c-c++-common/goacc/privatization-1-compute-loop.c: Update.
	* c-c++-common/goacc/privatization-1-compute.c: Likewise.
	* c-c++-common/goacc/privatization-1-routine_gang-loop.c:
	Likewise.
	* c-c++-common/goacc/privatization-1-routine_gang.c: Likewise.
	libgomp/
	PR middle-end/90115
	* testsuite/libgomp.oacc-c-c++-common/static-variable-1.c: Update.
	* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Likewise.
2021-05-21 20:23:34 +02:00
Thomas Schwinge
11b8286a83 [OpenACC privatization] Largely extend diagnostics and corresponding testsuite coverage [PR90115]
gcc/
	PR middle-end/90115
	* flag-types.h (enum openacc_privatization): New.
	* params.opt (-param=openacc-privatization): New.
	* doc/invoke.texi (openacc-privatization): Document it.
	* omp-general.h (get_openacc_privatization_dump_flags): New
	function.
	* omp-low.c (oacc_privatization_candidate_p): Add diagnostics.
	* omp-offload.c (execute_oacc_device_lower)
	<IFN_UNIQUE_OACC_PRIVATE>: Re-work diagnostics.
	* target.def (goacc.adjust_private_decl): Add 'location_t'
	parameter.
	* doc/tm.texi: Regenerate.
	* config/gcn/gcn-protos.h (gcn_goacc_adjust_private_decl): Adjust.
	* config/gcn/gcn-tree.c (gcn_goacc_adjust_private_decl): Likewise.
	* config/nvptx/nvptx.c (nvptx_goacc_adjust_private_decl):
	Likewise.  Preserve it for...
	(nvptx_goacc_expand_var_decl): ... use here.
	gcc/testsuite/
	PR middle-end/90115
	* c-c++-common/goacc/privatization-1-compute-loop.c: New file.
	* c-c++-common/goacc/privatization-1-compute.c: Likewise.
	* c-c++-common/goacc/privatization-1-routine_gang-loop.c:
	Likewise.
	* c-c++-common/goacc/privatization-1-routine_gang.c: Likewise.
	* gfortran.dg/goacc/privatization-1-compute-loop.f90: Likewise.
	* gfortran.dg/goacc/privatization-1-compute.f90: Likewise.
	* gfortran.dg/goacc/privatization-1-routine_gang-loop.f90:
	Likewise.
	* gfortran.dg/goacc/privatization-1-routine_gang.f90: Likewise.
	* c-c++-common/goacc-gomp/nesting-1.c: Update.
	* c-c++-common/goacc/private-reduction-1.c: Likewise.
	* gfortran.dg/goacc/private-3.f95: Likewise.
	libgomp/
	PR middle-end/90115
	* testsuite/libgomp.oacc-fortran/private-atomic-1-vector.f90: New
	file.
	* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: Update.
	* testsuite/libgomp.oacc-c-c++-common/host_data-7.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-4.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-local-worker-5.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-4.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-5.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-gang-6.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-vector-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-4.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-5.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-6.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/kernels-private-vars-loop-worker-7.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-g-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-g-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-gwv-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-gwv-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-gwv-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-v-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-v-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-w-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-w-2.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-red-wv-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-v-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-w-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/loop-wv-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/private-atomic-1-gang.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/private-atomic-1.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/private-variables.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/routine-4.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/static-variable-1.c:
	Likewise.
	* testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f: Likewise.
	* testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f: Likewise.
	* testsuite/libgomp.oacc-fortran/declare-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/host_data-5.F90: Likewise.
	* testsuite/libgomp.oacc-fortran/if-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-1.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-vector-2.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-1.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-2.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-3.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-4.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-5.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-6.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-worker-7.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/optional-private.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/parallel-dims.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/private-atomic-1-gang.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/private-atomic-1-worker.f90:
	Likewise.
	* testsuite/libgomp.oacc-fortran/private-variables.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/routine-7.f90: Likewise.
2021-05-21 20:09:59 +02:00
Thomas Schwinge
d42c10563e Add '__OPTIMIZE__' DejaGnu selector
gcc/testsuite/
	* lib/target-supports.exp (check_effective_target___OPTIMIZE__):
	New proc.
	* gcc.c-torture/compile/ssa-unused-1.c: New file.
	gcc/
	* doc/sourcebuild.texi (Other attributes): Document '__OPTIMIZE__'
	DejaGnu selector.
2021-05-21 20:09:16 +02:00
Thomas Schwinge
5a0fe1f6c4 [OpenACC privatization] Explain OpenACC privatization candidate selection [PR90115]
gcc/
	PR middle-end/90115
	* omp-low.c (oacc_privatization_candidate_p): New function.
	(oacc_privatization_scan_clause_chain)
	(oacc_privatization_scan_decl_chain): Use it.  Also
	'gcc_checking_assert' that we're not seeing duplicates.
2021-05-21 20:08:14 +02:00
Thomas Schwinge
ad4612cb04 [OpenACC privatization] Skip processing if no work to be done [PR90115]
gcc/
	PR middle-end/90115
	* omp-offload.c (execute_oacc_device_lower): Skip processing if no
	work to be done.
2021-05-21 20:07:19 +02:00
Thomas Schwinge
21803fcaeb [OpenACC privatization] Explain two different configurations [PR90115]
gcc/
	PR middle-end/90115
	* omp-offload.c (execute_oacc_device_lower): Explain.
2021-05-21 20:06:02 +02:00