aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2021-05-26Warn on type punning that toggles scalar storage orderEric Botcazou2-0/+31
As documented in the manual, we do not support type punning that toggles the scalar storage order, so this adds a warning for the case of unions. gcc/c/ PR c/100653 * c-decl.c (finish_struct): Warn for a union containing an aggregate field with a differing scalar storage order. gcc/testsuite/ * gcc.dg/sso-13.c: New test.
2021-05-26arm: Auto-vectorization for MVE: vaddvChristophe Lyon4-14/+53
This patch adds support for the reduc_plus_scal optab with MVE, which maps to the vaddv instruction. It moves the reduc_plus_scal_<mode> expander from neon.md to vec-common.md and adds support for MVE to it. Since vaddv uses a 32-bits accumulator, we have to truncate it's result. For instance: int32_t test__s8x16 (int8_t *a) { int i; int8_t result = 0; for (i=0; i<16; i++) { result += a[i]; } return result; } is compiled into: vldrb.8 q3, [r0] vaddv.s8 r0, q3 sxtb r0, r0 bx lr If we used uint8_t instead of int8_t, we still use vaddv.s8 r0, q3, but truncate with uxtb r0, r0. 2021-05-25 Christophe Lyon <christophe.lyon@linaro.org> gcc/ * config/arm/mve.md (mve_vaddvq_<supf><mode>): Prefix with '@'. * config/arm/neon.md (reduc_plus_scal_<mode>): Move to .. * config/arm/vec-common.md: .. here. Add support for MVE. gcc/testsuite/ * gcc.target/arm/simd/mve-vaddv-1.c: New test.
2021-05-26Remove useless register keywordsJakub Jelinek7-30/+32
This patch removes useless register keywords from several backends and one spot in the Ada FE. 2021-05-26 Jakub Jelinek <jakub@redhat.com> gcc/ * config/epiphany/epiphany.c (epiphany_print_operand_address): Remove register keywords. * config/microblaze/microblaze.c (microblaze_legitimize_address, call_internal1, microblaze_option_override, print_operand): Likewise. * config/microblaze/microblaze.md (call_internal_plt, call_value_intern_plt, call_value_intern): Likewise. * config/arm/aout.h (ASM_OUTPUT_ALIGN): Likewise. * config/iq2000/iq2000.md (call_internal1, call_value_internal1, call_value_multiple_internal1): Likewise. * config/bfin/bfin.c (symbolic_reference_mentioned_p): Likewise. gcc/ada/ * init.c (__gnat_error_handler): Remove register keyword.
2021-05-26arc: Remove useless register keywordJan-Benedict Glaw1-10/+10
The "register" keyword was removed in C++17, remove them to get the backend to build again. gcc/ * config/arc/arc.c (arc_address_cost, arc_print_operand_address, arc_ccfsm_advance, symbolic_reference_mentioned_p, arc_raw_symbolic_reference_mentioned_p): Remove register keyword.
2021-05-26c++: constexpr and copy elision within mem init [PR100368]Patrick Palka2-7/+24
In the testcase below, the member initializer b(f()) inside C's default constructor is encoded as a TARGET_EXPR wrapping the CALL_EXPR f() in C++17 mode. During massaging of this constexpr constructor, build_target_expr_with_type called from bot_manip on this initializer tries to add an extra copy using B's implicitly deleted copy constructor rather than just preserving the copy elision. Since it's wrong to introduce an extra copy when initializing a temporary from a CALL_EXPR, this patch makes build_target_expr_with_type avoid calling force_rvalue in this case. Additionally, bot_manip should be copying TARGET_EXPRs in a more oblivious manner, so this patch makes bot_manip use force_target_expr instead of build_target_expr_with_type. And since bot_manip is now no longer a caller, we can remove the void initializer handling in build_target_expr_with_type. PR c++/100368 gcc/cp/ChangeLog: * tree.c (build_target_expr_with_type): Don't call force_rvalue on CALL_EXPR initializer. Simplify now that bot_manip is no longer a caller. (bot_manip): Use force_target_expr instead of build_target_expr_with_type. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/elide6.C: New test.
2021-05-26c++: Fix reference NTTP binding to noexcept fn [PR97420]Patrick Palka3-26/+23
Here, in C++17 mode, convert_nontype_argument_function is rejecting binding a non-noexcept function reference template parameter to a noexcept function (encoded as the template argument '*(int (&) (int)) &f'). The first roadblock to making this work is that the argument is wrapped an an implicit INDIRECT_REF, so we need to unwrap it before calling strip_fnptr_conv. The second roadblock is that the NOP_EXPR cast converts from a function pointer type to a reference type while simultaneously removing the noexcept qualification, and fnptr_conv_p doesn't consider this cast to be a function pointer conversion. This patch fixes this by making fnptr_conv_p treat REFERENCE_TYPEs and POINTER_TYPEs interchangeably. Finally, in passing, this patch also simplifies noexcept_conv_p by removing a bunch of redundant checks already performed by its only caller fnptr_conv_p. PR c++/97420 gcc/cp/ChangeLog: * cvt.c (noexcept_conv_p): Remove redundant checks and simplify. (fnptr_conv_p): Don't call non_reference. Use INDIRECT_TYPE_P instead of TYPE_PTR_P. * pt.c (convert_nontype_argument_function): Look through implicit INDIRECT_REFs before calling strip_fnptr_conv. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/noexcept68.C: New test.
2021-05-26openmp: Fix up handling of target constructs in offloaded routines [PR100573]Jakub Jelinek2-8/+43
OpenMP Nesting of Regions restrictions say: - If a target update, target data, target enter data, or target exit data construct is encountered during execution of a target region, the behavior is unspecified. - If a target construct is encountered during execution of a target region and a device clause in which the ancestor device-modifier appears is not present on the construct, the behavior is unspecified. That wording is about the dynamic (runtime) behavior, not about lexical nesting, so while it is UB if omp target * is encountered in the target region, we need to make it compile and link (for lexical nesting of target * inside of target we actually emit a warning). To make this work, I had to do multiple changes. One was to mark .omp_data_{sizes,kinds}.* variables when static as "omp declare target". Another one was to add stub GOMP_target* entrypoints to nvptx and gcn libgomp.a. The entrypoint functions shouldn't be called or passed in the offload regions, otherwise libgomp: cuLaunchKernel error: too many resources requested for launch was reported; fixed by changing those arguments of calls to GOMP_target_ext to NULL. And we didn't mark the entrypoints "omp target entrypoint" when the caller has been "omp declare target". 2021-05-26 Jakub Jelinek <jakub@redhat.com> PR libgomp/100573 gcc/ * omp-low.c: Include omp-offload.h. (create_omp_child_function): If current_function_decl has "omp declare target" attribute and is_gimple_omp_offloaded, remove that attribute from the copy of attribute list and add "omp target entrypoint" attribute instead. (lower_omp_target): Mark .omp_data_sizes.* and .omp_data_kinds.* variables for offloading if in omp_maybe_offloaded_ctx. * omp-offload.c (pass_omp_target_link::execute): Nullify second argument to GOMP_target_data_ext in offloaded code. libgomp/ * config/nvptx/target.c (GOMP_target_ext, GOMP_target_data_ext, GOMP_target_end_data, GOMP_target_update_ext, GOMP_target_enter_exit_data): New dummy entrypoints. * config/gcn/target.c (GOMP_target_ext, GOMP_target_data_ext, GOMP_target_end_data, GOMP_target_update_ext, GOMP_target_enter_exit_data): Likewise. * testsuite/libgomp.c-c++-common/for-3.c (DO_PRAGMA, OMPTEAMS, OMPFROM, OMPTO): Define. (main): Remove #pragma omp target teams around all the tests. * testsuite/libgomp.c-c++-common/target-41.c: New test. * testsuite/libgomp.c-c++-common/target-42.c: New test.
2021-05-26C-SKY: Delete TARGET_CAN_CHANGE_MODE_CLASS, use defualt definition.Geng Qi1-16/+0
gcc/ChangeLog: * config/csky/csky.c (csky_can_change_mode_class): Delete. For csky, HF/SF mode use the low bits of VREGS.
2021-05-26Fix C++ libgomp regressionsEric Botcazou1-1/+1
This is only a stopgap fix. gcc/ * gimplify.c (gimplify_decl_expr): Do not clear TREE_READONLY on a DECL which is a reference for OMP.
2021-05-26DOC: update documentation of __gcov_{dump,reset}Martin Liska1-3/+5
gcc/ChangeLog: PR gcov-profile/100751 * doc/gcov.texi: Document that __gcov_dump can be called just once and that __gcov_reset resets run-time counters.
2021-05-26docs: port old-intall.texi part to install.texiMartin Liska1-14/+58
gcc/ChangeLog: * doc/install.texi: Port relevant part from install-old.texi and re-generate list of CPUs and systems.
2021-05-26Remove install-old.texiMartin Liska4-205/+3
gcc/ChangeLog: * Makefile.in: Remove it. * doc/include/fdl.texi: Update next/previous chapters. * doc/install.texi: Likewise. * doc/install-old.texi: Removed.
2021-05-26C-SKY: Support fldrd/fstrd for fpuv2 and fldr.64/fstr.64 for fpuv3.Geng Qi6-11/+51
gcc/ChangeLog: * config/csky/csky.c (ck810_legitimate_index_p): Support "base + index" with DF mode. * config/csky/constraints.md ("Y"): New constraint for memory operands without index register. * config/csky/csky_insn_fpuv2.md (fpuv3_movdf): Use "Y" instead of "m" when mov between memory and general registers, and lower their priority. * config/csky/csky_insn_fpuv3.md (fpuv2_movdf): Likewise. gcc/testsuite/ChangeLog: * gcc.target/csky/fldrd_fstrd.c: New. * gcc.target/csky/fpuv3/fldr64_fstr64.c: New.
2021-05-26C-SKY: Delete definition TARGET_PROMOTE_PROTOTYPES, just use the default ↵Geng Qi1-3/+0
definition. gcc/ChangeLog: * config/csky/csky.c (TARGET_PROMOTE_PROTOTYPES): Delete.
2021-05-26C-SKY: Fix FAIL of gcc.dg/torture/stackalign/builtin-return-2.c.Geng Qi1-0/+4
gcc/ChangeLog: * config/csky/csky.md (untyped_call): Emit clobber for return registers to mark them used.
2021-05-26C-SKY: Add instruction "ld.bs".Geng Qi2-0/+21
gcc/ * config/csky/csky.md (cskyv2_sextend_ldbs): New. gcc/testsuite/ * gcc.target/csky/ldbs.c: New.
2021-05-26Optimize x < 0 ? ~y : y to (x >> 31) ^ y in match.pdAndrew Pinski3-2/+85
This copies the optimization that is done in phiopt for "x < 0 ? ~y : y to (x >> 31) ^ y" into match.pd. The code for phiopt is kept around until phiopt uses match.pd (which I am working towards). Note the original testcase is now optimized early on and I added a new testcase to optimize during phiopt. OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions. Thanks, Andrew Pinski Differences from v1: V2: Add check for integeral type to make sure vector types are not done. gcc: * match.pd (x < 0 ? ~y : y): New patterns. gcc/testsuite: * gcc.dg/tree-ssa/pr96928.c: Update test for slightly different IR. * gcc.dg/tree-ssa/pr96928-1.c: New testcase.
2021-05-26Add a couple of A?CST1:CST2 match and simplify optimizationsAndrew Pinski1-0/+41
Instead of some of the more manual optimizations inside phi-opt, it would be good idea to do a lot of the heavy lifting inside match and simplify instead. In the process, this moves the three simple A?CST1:CST2 (where CST1 or CST2 is zero) simplifications. OK? Boostrapped and tested on x86_64-linux-gnu with no regressions. Differences from V1: * Use bit_xor 1 instead of bit_not to fix the problem with boolean types which are not 1 bit precision. Thanks, Andrew Pinski gcc: * match.pd (A?CST1:CST2): Add simplifcations for A?0:+-1, A?+-1:0, A?POW2:0 and A?0:POW2.
2021-05-26Daily bump.GCC Administrator7-1/+394
2021-05-25Remove the logical stmt cache for now.Andrew MacLeod2-340/+2
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-25Adjust fur_source internal api to use gori_compute not ranger_cache.Andrew MacLeod2-15/+15
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-25Make expr_range_in_bb stmt based rather than block based.Andrew MacLeod2-19/+19
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-25Tweak location of non-null calls. revamp ranger debug output.Andrew MacLeod2-76/+74
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-25Unify temporal cache with gori dependencies.Andrew MacLeod2-85/+32
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-25Add imports and strengthen the export definition in range_def and gori_map.Andrew MacLeod2-106/+327
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-25fully populate the export list from range_cache, not gori_compute.Andrew MacLeod2-10/+10
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-25Change gori_compute to inherit from gori_map instead of having a gori-map.Andrew MacLeod2-69/+55
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-25Fix selftest for targets where short and int are the same size.Aldy Hernandez1-4/+6
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-25Remove stalled TREE_READONLY flag on automatic variableEric Botcazou1-0/+3
gcc/ * gimplify.c (gimplify_decl_expr): Clear TREE_READONLY on the DECL when really creating an initialization statement for it.
2021-05-25c++: Avoid -Wunused-value false positives on nullptr passed to ellipsis ↵Jakub Jelinek3-1/+41
[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-25Fix thinko in latest change to setup_one_parameterEric Botcazou1-1/+1
gcc/ * tree-inline.c (setup_one_parameter): Fix thinko in new condition.
2021-05-25RISC-V: Pass -mno-relax to assemblerKito Cheng1-0/+1
gcc/ChangeLog: * config/riscv/riscv.h (ASM_SPEC): Pass -mno-relax.
2021-05-25Improve global state for options.Martin Liska3-13/+21
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-25Add no_sanitize_coverage attribute.Martin Liska8-5/+73
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-25C-SKY: Fix copyright of csky-modes.def.Cooper Qu1-19/+19
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-25C-SKY: Amend copyrights of recently added files.Cooper Qu4-5/+64
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-25middle-end/100727 - fix call expansion with WITH_SIZE_EXPR argRichard Biener2-1/+4
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-25openmp: Fix reduction clause handling on teams distribute simd [PR99928]Jakub Jelinek4-6/+23
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-25Fix sphinx-build warning.Martin Liska1-2/+2
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-25C-SKY: Add cases for csky fpuv3 instructions.Geng Qi37-0/+958
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-25fortran/intrinsic.texi: Fix copy'n'paste errors and typosTobias Burnus1-7/+6
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-25C-SKY: Separate FRAME_POINTER_REGNUM into FRAME_POINTER_REGNUM and ↵Geng Qi2-8/+14
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-25C-SKY: Bug fix for bad setting of TARGET_DSP and TARGET_DIV.Geng Qi1-12/+12
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-25C-SKY: Delete LO_REGS and HI_REGS, use HILO_REGS instead.Geng Qi3-14/+3
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-25C-SKY: Add fpuv3 instructions and CK860 arch.Geng Qi16-675/+2125
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-25Daily bump.GCC Administrator6-1/+101
2021-05-24compiler: mark global variables whose address is takenIan Lance Taylor7-184/+276
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-24Fusion patterns for add-logical/logical-addAaron Sawdey6-279/+797
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-24VARYING ranges of different sizes should not be equal.Aldy Hernandez1-1/+12
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-24OpenMP/Fortran: Handle polymorphic scalars in data-sharing FIRSTPRIVATE ↵Tobias Burnus6-2/+383
[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.