Commit Graph

185463 Commits

Author SHA1 Message Date
GCC Administrator
2bc6dacecb Daily bump. 2021-05-26 00:16:41 +00:00
Andrew MacLeod
a6e94287d3 Remove the logical stmt cache for now.
With the depth limiting, we are not currently using the logical stmt cache.

	* gimple-range-gori.cc (class logical_stmt_cache): Delete
	(logical_stmt_cache::logical_stmt_cache ): Delete.
	(logical_stmt_cache::~logical_stmt_cache): Delete.
	(logical_stmt_cache::cache_entry::dump): Delete.
	(logical_stmt_cache::get_range): Delete.
	(logical_stmt_cache::cached_name ): Delete.
	(logical_stmt_cache::same_cached_name): Delete.
	(logical_stmt_cache::cacheable_p): Delete.
	(logical_stmt_cache::slot_diagnostics ): Delete.
	(logical_stmt_cache::dump): Delete.
	(gori_compute_cache::gori_compute_cache): Delete.
	(gori_compute_cache::~gori_compute_cache): Delete.
	(gori_compute_cache::compute_operand_range): Delete.
	(gori_compute_cache::cache_stmt): Delete.
	* gimple-range-gori.h (gori_compute::compute_operand_range): Remove
	virtual.
	(class gori_compute_cache): Delete.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
f630797a1e Adjust fur_source internal api to use gori_compute not ranger_cache.
In order to access the dependencies, the FoldUsingRange source API class
stored a range_cache.. THis is now contained in the base gori_compute class,
so use that now.

	* gimple-range.cc (fold_using_range::range_of_range_op): Use m_gori
	intead of m_cache.
	(fold_using_range::range_of_address): Adjust.
	(fold_using_range::range_of_phi): Adjust.
	* gimple-range.h (class fur_source): Adjust.
	(fur_source::fur_source): Adjust.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
2bccd9154e Make expr_range_in_bb stmt based rather than block based.
prerequisite to moving to a range_query model, make it stmt based.

	* gimple-range-gori.cc (gori_compute::expr_range_at_stmt): Rename
	from expr_range_in_bb and adjust.
	(gori_compute::compute_name_range_op): Adjust.
	(gori_compute::optimize_logical_operands): Adjust.
	(gori_compute::compute_logical_operands_in_chain): Adjust.
	(gori_compute::compute_operand1_range): Adjust.
	(gori_compute::compute_operand2_range): Adjust.
	(ori_compute_cache::cache_stmt): Adjust.
	* gimple-range-gori.h (gori_compute): Rename prototype.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
35c78c6fc5 Tweak location of non-null calls. revamp ranger debug output.
range_on_entry shouldnt be checking non-null, but we sometimes should
after calling it.
change the debug output a bit.

	* gimple-range.cc (gimple_ranger::range_of_expr): Non-null should be
	checked only after range_of_stmt, not range_on_entry.
	(gimple_ranger::range_on_entry): Check for non-null in any
	predecessor block, if it is not already non-null.
	(gimple_ranger::range_on_exit): DOnt check for non-null after
	range on entry call.
	(gimple_ranger::dump_bb): New.  Split from dump.
	(gimple_ranger::dump): Adjust.
	* gimple-range.h (class gimple_ranger): Adjust.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
10b286ce33 Unify temporal cache with gori dependencies.
Move the temporal cache to strictly be a timestamp, and query GORI for
the dependencies rather than trying to register and maintain them.

	* gimple-range-cache.cc (struct range_timestamp): Delete.
	(class temporal_cache): Adjust.
	(temporal_cache::get_timestamp): Delete.
	(temporal_cache::set_dependency): Delete.
	(temporal_cache::temporal_value): Adjust.
	(temporal_cache::current_p): Take dependencies as params.
	(temporal_cache::set_timestamp): Adjust.
	(temporal_cache::set_always_current): Adjust.
	(ranger_cache::get_non_stale_global_range): Adjust.
	(ranger_cache::register_dependency): Delete.
	* gimple-range-cache.h (class range_cache): Adjust.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
c216447041 Add imports and strengthen the export definition in range_def and gori_map.
All add up to 2 direct dependencies for each ssa-name.
Add gori import/export iterators.

	* gimple-range-gori.cc (range_def_chain::range_def_chain): init
	bitmap obstack.
	(range_def_chain::~range_def_chain): Dispose of obstack rather than
	each individual bitmap.
	(range_def_chain::set_import): New.
	(range_def_chain::get_imports): New.
	(range_def_chain::chain_import_p): New.
	(range_def_chain::register_dependency): Rename from build_def_chain
	and set imports.
	(range_def_chain::def_chain_in_bitmap_p): New.
	(range_def_chain::add_def_chain_to_bitmap): New.
	(range_def_chain::has_def_chain): Just check first depenedence.
	(range_def_chain::get_def_chain): Process imports, use generic
	register_dependency routine.
	(range_def_chain::dump): New.
	(gori_map::gori_map): Allocate import list.
	(gori_map::~gori_map): Release imports.
	(gori_map::exports): Check for past allocated block size.
	(gori_map::imports): New.
	(gori_map::def_chain_in_export_p): Delete.
	(gori_map::is_import_p): New.
	(gori_map::maybe_add_gori): Handle imports.
	(gori_map::dump): Adjust output, add imports.
	(gori_compute::has_edge_range_p): Remove def_chain_in_export call.
	(gori_export_iterator::gori_export_iterator): New.
	(gori_export_iterator::next): New.
	(gori_export_iterator::get_name): New.
	* gimple-range-gori.h (range_def_chain): Add imports and direct
	dependecies via struct rdc.
	(range_def_chain::depend1): New.
	(range_def_chain::depend2): New.
	(class gori_map): Adjust.
	(FOR_EACH_GORI_IMPORT_NAME): New.
	(FOR_EACH_GORI_EXPORT_NAME): New.
	(class gori_export_iterator): New.
2021-05-25 19:28:04 -04:00
Andrew MacLeod
cb33af1a62 fully populate the export list from range_cache, not gori_compute.
Ranger wants to prepopulate all the export blocks so that it has an initial
invariant set of names. GORI consumers shouldn't be penalized for ranger
requirements.  This way any gori client remains lightweight.

	* gimple-range-cache.cc (ranger_cache::ranger_cache):  Move initial
	export cache filling to here.
	* gimple-range-gori.cc (gori_compute::gori_compute) : From Here.
2021-05-25 19:26:47 -04:00
Andrew MacLeod
28ceee1b91 Change gori_compute to inherit from gori_map instead of having a gori-map.
Move the classes to the header file and inherit instead of instantiating.

	* gimple-range-gori.cc (range_def_chain): Move to gimple-range-gori.h.
	(gori_map): Move to gimple-range-gori.h.
	(gori_compute::gori_compute): Adjust.
	(gori_compute::~gori_compute): Delete.
	(gori_compute::compute_operand_range_switch): Adjust.
	(gori_compute::compute_operand_range): Adjust.
	(gori_compute::compute_logical_operands): Adjust.
	(gori_compute::has_edge_range_p ): Adjust.
	(gori_compute::set_range_invariant): Delete.
	(gori_compute::dump): Adjust.
	(gori_compute::outgoing_edge_range_p): Adjust.
	* gimple-range-gori.h (class range_def_chain): Relocate here.
	(class gori_map): Relocate here.
	(class gori_compute): Inherit from gori_map, and adjust.
2021-05-25 19:26:47 -04:00
Aldy Hernandez
41ddc5b0a6 Fix selftest for targets where short and int are the same size.
avr-elf seems to use HImode for both integer_type_node and
signed_char_type_node, which is causing the check for different sized
VARYING ranges to fail.

gcc/ChangeLog:

	* value-range.cc (range_tests_legacy): Use
	build_nonstandard_integer_type instead of int and short.
2021-05-25 18:34:22 +02:00
Eric Botcazou
fd97aeb494 Remove stalled TREE_READONLY flag on automatic variable
gcc/
	* gimplify.c (gimplify_decl_expr): Clear TREE_READONLY on the DECL
	when really creating an initialization statement for it.
2021-05-25 18:31:43 +02:00
Jakub Jelinek
ad52d89808 c++: Avoid -Wunused-value false positives on nullptr passed to ellipsis [PR100666]
When passing expressions with decltype(nullptr) type with side-effects to
ellipsis, we pass (void *)0 instead, but for the side-effects evaluate them
on the lhs of a COMPOUND_EXPR.  Unfortunately that means we warn about it
if the expression is a call to nodiscard marked function, even when the
result is really used, just needs to be transformed.

Fixed by adding a warning_sentinel.

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

	PR c++/100666
	* call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE
	and side-effects, temporarily disable -Wunused-result warning when
	building COMPOUND_EXPR.

	* g++.dg/cpp1z/nodiscard8.C: New test.
	* g++.dg/cpp1z/nodiscard9.C: New test.
2021-05-25 17:24:38 +02:00
Eric Botcazou
1d3707a52d Fix thinko in latest change to setup_one_parameter
gcc/
	* tree-inline.c (setup_one_parameter): Fix thinko in new condition.
2021-05-25 16:51:57 +02:00
Jakub Jelinek
7a5e9a58fb c++tools: Include <cstdlib> for exit [PR100731]
This TU uses exit, but doesn't include <stdlib.h> or <cstdlib> and relies
on some other header to include it indirectly, which apparently doesn't
happen on reporter's host.

The other <c*> headers aren't guarded either and we rely on a compiler
capable of C++11, so maybe we can rely on <cstdlib> being around
unconditionally.

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

	PR bootstrap/100731
	* server.cc: Include <cstdlib>.
2021-05-25 16:44:35 +02:00
Kito Cheng
3b0a7d624e RISC-V: Pass -mno-relax to assembler
gcc/ChangeLog:
	* config/riscv/riscv.h (ASM_SPEC): Pass -mno-relax.
2021-05-25 21:28:14 +08:00
Martin Liska
ebd5e86c0f Improve global state for options.
gcc/c-family/ChangeLog:

	PR tree-optimization/92860
	PR target/99592
	* c-attribs.c (handle_optimize_attribute): Save target node
	before calling parse_optimize_options and save it in case
	it changes.
	* c-pragma.c (handle_pragma_target): Similarly for pragma.
	(handle_pragma_pop_options): Likewise here.

gcc/ChangeLog:

	PR tree-optimization/92860
	PR target/99592
	* optc-save-gen.awk: Remove exceptions.
2021-05-25 14:57:03 +02:00
Martin Liska
cec4d4a678 Add no_sanitize_coverage attribute.
gcc/ChangeLog:

	* asan.h (sanitize_coverage_p): New function.
	* doc/extend.texi: Document it.
	* fold-const.c (fold_range_test): Use sanitize_flags_p
	instead of flag_sanitize_coverage.
	(fold_truth_andor): Likewise.
	* sancov.c: Likewise.
	* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Handle
	-fsanitize-coverage when inlining.

gcc/c-family/ChangeLog:

	* c-attribs.c (handle_no_sanitize_coverage_attribute): New.

gcc/testsuite/ChangeLog:

	* gcc.dg/sancov/attribute.c: New test.
2021-05-25 14:56:28 +02:00
Cooper Qu
f5c6b71c9b C-SKY: Fix copyright of csky-modes.def.
The incorrect copyright comment format causes build error:
builddir/source//gcc/gcc/config/csky/csky-modes.def: In function ‘void create_modes()’:
builddir/source//gcc/gcc/config/csky/csky-modes.def:1:4: error: ‘C’ was not declared in this scope
 ;; C-SKY extra machine modes.
    ^
builddir/source//gcc/gcc/config/csky/csky-modes.def:1:6: error: ‘SKY’ was not declared in this scope
 ;; C-SKY extra machine modes.
      ^
builddir/source//gcc/gcc/config/csky/csky-modes.def:2:16: error: ‘Copyright’ was not declared in this scope
 ;; Copyright (C) 2018-2021 Free Software Foundation, Inc.
                ^
builddir/source//gcc/gcc/config/csky/csky-modes.def:3:4: error: ‘Contributed’ was not declared in this scope
 ;; Contributed by C-SKY Microsystems and Mentor Graphics.
    ^

gcc/ChangeLog:
	* config/csky/csky-modes.def : Fix copyright.
2021-05-25 20:15:23 +08:00
Eric Botcazou
4b1987f8ad Fix typo and weird syntax in configure script
c++tools/
	* configure.ac (--enable-maintainer-mode): Fix typo and weird syntax.
	* configure: Regenerate.
2021-05-25 12:13:15 +02:00
Cooper Qu
45d5c4769a C-SKY: Amend copyrights of recently added files.
gcc/ChangeLog:
	* config/csky/csky-modes.def : Amend copyright.
	* config/csky/csky_insn_fpuv2.md : Likewise.
	* config/csky/csky_insn_fpuv3.md : Likewise.

gcc/testsuite/ChangeLog:
	* gcc.target/csky/fpuv3/fpuv3.exp : Amend copyright.
2021-05-25 17:24:24 +08:00
Richard Biener
2c3202e6f8 libgomp/100747 - fix permission of configure scripts
Added executable bits.

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

	PR libgomp/100747
liboffloadmic/
	* configure: Make executable.
	* plugin/configure: Likewise.
2021-05-25 11:12:45 +02:00
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