- 03 Mar, 2020 8 commits
-
-
The following testcase ICEs in cross to riscv64-linux. The problem is that we have a DImode integral constant (that doesn't fit into SImode), which is pushed into a constant pool and later access just the first half of it using a MEM. When plus_constant is called on such a MEM, if the constant has mode, we verify the mode, but if it doesn't, we don't and ICE later on when we think the CONST_INT is a valid SImode constant. 2020-03-03 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/94002 * explow.c (plus_constant): Punt if cst has VOIDmode and get_pool_mode is different from mode. * gcc.dg/pr94002.c: New test.
Jakub Jelinek committed -
All ARC's small data adressing is using address scaling feature of the load/store instructions (i.e., the address is made of a general pointer plus a shifted offset. The shift amount depends on the addressing mode). This patch is checking the offset of an address if it fits the scalled constraint. If so, a small data access is generated. This patch fixes execute' pr93249 failure. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.c (leigitimate_small_data_address_p): Check if an address has an offset which fits the scalling constraint for a load/store operation. (legitimate_scaled_address_p): Update use leigitimate_small_data_address_p. (arc_print_operand): Likewise. (arc_legitimate_address_p): Likewise. (legitimate_small_data_address_p): Likewise. Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
Claudiu Zissulescu committed -
With the refurbish of ARC600' accumulator support, the mlo_operand doesn't reflect the proper low accumulator register for the newer ARCv2 accumulator register used by the fma instructions. Hence, replace it with accl_operand predicate. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (fmasf4_fpu): Use accl_operand predicate. (fnmasf4_fpu): Likewise.
Claudiu Zissulescu committed -
Early expand ADDDI3 and SUBDI3 for better code gen. gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (adddi3): Early expand the 64bit operation into 32bit ops. (subdi3): Likewise. (adddi3_i): Remove pattern. (subdi3_i): Likewise.
Claudiu Zissulescu committed -
gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc.md (eh_return): Add length info.
Claudiu Zissulescu committed -
2020-03-03 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/93927 * gcc.c-torture/compile/pr93927-1.c: New test. * gcc.c-torture/compile/pr93927-2.c: New test.
Jakub Jelinek committed -
gcc/cp * coroutines.cc (finish_co_await_expr): Build co_await_expr with unknown_type_node. (finish_co_yield_expr): Ditto. *pt.c (type_dependent_expression_p): Set co_await/yield_expr with unknown type as dependent. gcc/testsuite * g++.dg/coroutines/torture/co-await-14-template-traits.C: New test.
JunMa committed -
GCC Administrator committed
-
- 02 Mar, 2020 26 commits
-
-
The note about duplicates attached to analyzer diagnostics feels like an implementation detail; it's likely just noise from the perspective of an end-user. This patch disables it by default, introducing a flag to re-enable it. gcc/analyzer/ChangeLog: * analyzer.opt (fanalyzer-show-duplicate-count): New option. * diagnostic-manager.cc (diagnostic_manager::emit_saved_diagnostic): Use the above to guard the printing of the duplicate count. gcc/ChangeLog: * doc/invoke.texi (-fanalyzer-show-duplicate-count): New. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c: Add -fanalyzer-show-duplicate-count.
David Malcolm committed -
gcc/ChangeLog: * doc/invoke.texi (Static Analyzer Options): Add -Wanalyzer-stale-setjmp-buffer to the list of options enabled by -fanalyzer.
David Malcolm committed -
PR analyzer/93959 reported that g++.dg/analyzer/malloc.C was failing with no output on Solaris. The issue is that <stdlib.h> there has "using std::free;", converting all the "free" calls to std::free, which fails the name-matching via is_named_call_p. This patch implements an is_std_named_call_p variant of is_named_call_p to check for the name within "std", and uses it in sm-malloc.c to check for std::malloc, std::calloc, and std::free. gcc/analyzer/ChangeLog: PR analyzer/93959 * analyzer.cc (is_std_function_p): New function. (is_std_named_call_p): New functions. * analyzer.h (is_std_named_call_p): New decl. * sm-malloc.cc (malloc_state_machine::on_stmt): Check for "std::" variants when checking for malloc, calloc and free. gcc/testsuite/ChangeLog: PR analyzer/93959 * g++.dg/analyzer/cstdlib-2.C: New test. * g++.dg/analyzer/cstdlib.C: New test.
David Malcolm committed -
In the absence of specific comment on the handling of closures I'd implemented something more than was intended (extending the lifetime of lambda capture-by-copy vars to the duration of the coro). After discussion at WG21 in February and by email, the correct handling is to treat the closure "this" pointer the same way as for a regular one, and thus it is the user's responsibility to ensure that the lambda capture object has suitable lifetime for the coroutine. It is noted that users frequently get this wrong, so it would be a good thing to revisit for C++23. This patch removes the additional copying behaviour for lambda capture-by- copy vars. gcc/cp/ChangeLog: 2020-03-02 Iain Sandoe <iain@sandoe.co.uk> * coroutines.cc (struct local_var_info): Adjust to remove the reference to the captured var, and just to note that this is a lambda capture proxy. (transform_local_var_uses): Handle lambda captures specially. (struct param_frame_data): Add a visited set. (register_param_uses): Also check for param uses in lambda capture proxies. (struct local_vars_frame_data): Remove captures list. (register_local_var_uses): Handle lambda capture proxies by noting and bypassing them. (morph_fn_to_coro): Update to remove lifetime extension of lambda capture-by-copy vars. gcc/testsuite/ChangeLog: 2020-03-02 Iain Sandoe <iain@sandoe.co.uk> Jun Ma <JunMa@linux.alibaba.com> * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: * g++.dg/coroutines/torture/lambda-09-init-captures.C: New test. * g++.dg/coroutines/torture/lambda-10-mutable.C: New test.
Iain Sandoe committed -
*movstrict<mode>_1 insn pattern allows only general registers, so we have to reject modes not suitable for general regs in corresponding movstrict<mode> expander. PR target/93997 * config/i386/i386.md (movstrict<mode>): Allow only registers with VALID_INT_MODE_P modes. testsuite/ChangeLog: PR target/93997 * gcc.target/i386/pr93997.c: New test.
Uros Bizjak committed -
gcc/testsuite/ChangeLog: PR tree-optimization/92982 * gcc.dg/strlenopt-94.c: New test.
Martin Sebor committed -
One missing bit from r10-6656. The docs and target-supports.exp already handle -std=gnu++20. 2020-03-02 Marek Polacek <polacek@redhat.com> PR c++/93958 - add missing -std=gnu++20. * c.opt: Add -std=gnu++20.
Marek Polacek committed -
PR fortran/93486 * module.c: Increase size of variables used to read module names when loading interfaces from module files to permit cases where the name is the concatenation of a module and submodule name. * gfortran.dg/pr93486.f90: New test.
Andrew Benson committed -
The new 25_algorithms/lexicographical_compare/93972.cc test fails on targets where char is unsigned, revealing an existing regression with the std::__memcmp helper that had gone unnoticed in std::lexicographical_compare. When comparing char and unsigned char, the memcmp optimisation is enabled, but the new std::__memcmp function fails to compile for mismatched types. PR libstdc++/93972 * include/bits/stl_algobase.h (__memcmp): Allow pointer types to differ. * testsuite/25_algorithms/lexicographical_compare/uchar.cc: New test.
Jonathan Wakely committed -
The key property of this alias is not that it may be an empty type, but that the type argument may not be used. The fact it's replaced by an empty type is just an implementation detail. The name was also backwards with respect to the bool argument. This patch changes the name to better reflect its purpose. * include/std/ranges (__detail::__maybe_empty_t): Rename to __maybe_present_t. (__adaptor::_RangeAdaptor, join_view, split_view): Use new name.
Jonathan Wakely committed -
In general, we need to manage the lifetime of compiler- generated awaitable instances in the coroutine frame, since these must persist across suspension points. However, it is quite possible that the user might provide the awaitable instances, either as function params or as a local variable. We will already generate a frame entry for these as required. At present, under this circumstance, we are duplicating these, awaitable, initialising a second frame copy for them (which we then subsequently destroy manually after the suspension point). That's not efficient - so an undesirable thinko in the first place. However, there is also an actual bug; if the compiler elects to elide the copy (which is perfectly legal), it does not have visibility of the manual management of the post-suspend destruction - this subsequently leads to double-free errors. The solution is not to make the second copy (as noted, params and local vars already have frame copies with managed lifetimes). gcc/cp/ChangeLog: 2020-03-02 Iain Sandoe <iain@sandoe.co.uk> * coroutines.cc (build_co_await): Do not build frame proxy vars when the co_await expression is a function parameter or local var. (co_await_expander): Do not initialise a frame var with itself. (transform_await_expr): Only substitute the awaitable frame var if it's needed. (register_awaits): Do not make frame copies for param or local vars that are awaitables. gcc/testsuite/ChangeLog: 2020-03-02 Iain Sandoe <iain@sandoe.co.uk> * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: New test. * g++.dg/coroutines/torture/local-var-5-awaitable.C: New test.
Iain Sandoe committed -
Add support for V64DFmode addition, and V64DImode min, max. There's no direct hardware support for these, so we use regular vector instructions and separate lane shift instructions. Also add support for V64QI and V64HI reductions. Some of these require additional extends and truncates, because AMD GCN has 32-bit vector lanes. 2020-03-02 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (dpp_move<mode>): New. (reduc_insn): Use 'U' and 'B' operand codes. (reduc_<reduc_op>_scal_<mode>): Allow all types. (reduc_<reduc_op>_scal_v64di): Delete. (*<reduc_op>_dpp_shr_<mode>): Allow all 1reg types. (*plus_carry_dpp_shr_v64si): Change to ... (*plus_carry_dpp_shr_<mode>): ... this and allow all 1reg int types. (mov_from_lane63_v64di): Change to ... (mov_from_lane63_<mode>): ... this, and allow all 64-bit modes. * config/gcn/gcn.c (gcn_expand_dpp_shr_insn): Increase buffer size. Support UNSPEC_MOV_DPP_SHR output formats. (gcn_expand_reduc_scalar): Add "use_moves" reductions. Add "use_extends" reductions. (print_operand_address): Add 'I' and 'U' codes. * config/gcn/gcn.md (unspec): Add UNSPEC_MOV_DPP_SHR.
Andrew Stubbs committed -
* gcc.target/arm/fuse-caller-save.c: Update expected output.
Jeff Law committed -
Segher Boessenkool committed
-
* include/bits/ranges_algo.h (shift_right): Add 'typename' to dependent type.
Jonathan Wakely committed -
* gcc.dg/vect/bb-slp-19.c: The comment does not align with fact that we started to SLP the testcase.
Martin Liska committed -
* libgcov-interface.c: Remove duplicate declaration of __gcov_flush_mx.
Martin Liska committed -
* testsuite/demangle-expected: Update expected demangling of enable_if pattern.
Nick Clifton committed -
When generating the separate file with LTO debug sections, we should also copy .note.gnu.property section. PR lto/93966 * simple-object.c (handle_lto_debug_sections): Also copy .note.gnu.property section.
H.J. Lu committed -
* lto-wrapper.c: Fix typo in comment about C++ standard version.
Martin Liska committed -
Several scev/IVOPTs cases aim to check some array references are sceved and later marked as REFERENCE ADDRESS IV groups. With IV group type dumping improving, these check strings can be improved. Otherwise, they become fragile with dumping changes. This patch is to keep check strings concise, meanwhile recover the coverage of case scev-8.c. gcc/testsuite/ChangeLog 2020-03-02 Kewen Lin <linkw@gcc.gnu.org> * gcc.dg/tree-ssa/scev-8.c: Revise check string. * gcc.dg/tree-ssa/scev-9.c: Ditto. * gcc.dg/tree-ssa/scev-10.c: Ditto. * gcc.dg/tree-ssa/scev-11.c: Ditto. * gcc.dg/tree-ssa/scev-12.c: Ditto.
Kewen Lin committed -
gcc/c-family/ChangeLog: PR c++/92721 * c-attribs.c (append_access_attrs): Correctly handle attribute. (handle_access_attribute): Same. gcc/ChangeLog: PR c++/92721 * calls.c (init_attr_rdwr_indices): Correctly handle attribute. gcc/testsuite/ChangeLog: PR c++/92721 g++.dg/ext/attr-access.C: New test.
Martin Sebor committed -
gcc/c/ChangeLog: PR middle-end/93926 * c-decl.c (types_close_enough_to_match): New function. (match_builtin_function_types): (diagnose_mismatched_decls): Add missing inform call to a warning. gcc/testsuite/ChangeLog: PR middle-end/93926 * gcc.dg/Wbuiltin-declaration-mismatch-13.c: New test.
Martin Sebor committed -
gcc/c/ChangeLog: PR c/93812 * c-typeck.c (build_functype_attribute_variant): New function. (composite_type): Call it. gcc/testsuite/ChangeLog: PR c/93812 * gcc.dg/format/proto.c: New test.
Martin Sebor committed -
PR middle-end/93829 - bogus -Wstringop-overflow on memcpy of a struct with a pointer member from another with a long string gcc/testsuite/ChangeLog: PR middle-end/93829 * gcc.dg/Wstringop-overflow-32.c: New test. gcc/ChangeLog: PR middle-end/93829 * tree-ssa-strlen.c (count_nonzero_bytes): Set the size to that of a pointer in the outermost ADDR_EXPRs.
Martin Sebor committed -
GCC Administrator committed
-
- 01 Mar, 2020 6 commits
-
-
PR testsuite/91797 * gcc.target/pwoerpc/pr68805.c: Update expected output.
Segher Boessenkool committed -
PR testsuite/91799 * gcc.target/powerpc/pr88233.c: Update expected output and add target selector.
Segher Boessenkool committed -
Improve test coverage, NFC. gcc/testsuite/ChangeLog: 2020-03-01 Iain Sandoe <iain@sandoe.co.uk> * g++.dg/coroutines/torture/class-07-data-member.C: New test.
Iain Sandoe committed -
Paul Thomas committed
-
Paul Thomas committed
-
Paul Thomas committed
-