1. 03 Mar, 2020 8 commits
    • explow: Fix ICE caused by plus_constant [PR94002] · 0ab503d3
      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
    • arc: Update legitimate small data address. · 02ae0e08
      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
    • arc: Use accl_operand predicate for fma instructions. · 9c3044a2
      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
    • arc: Improve code gen for 64bit add/sub operations. · adaa5395
      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
    • arc: Add length attribute to eh_return pattern. · 93338040
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.md (eh_return): Add length info.
      Claudiu Zissulescu committed
    • testsuite: Add testcases for already fixed PR [PR93927] · a422f689
      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
    • Build coroutine expression with unknown_type in processing_template_decl phase. · fd9e021c
      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
    • Daily bump. · 3f33c471
      GCC Administrator committed
  2. 02 Mar, 2020 26 commits
    • analyzer: don't print the duplicate count by default · 13b76912
      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
    • invoke.texi: add missing option to -fanalyzer list · 6e444407
      gcc/ChangeLog:
      	* doc/invoke.texi (Static Analyzer Options): Add
      	-Wanalyzer-stale-setjmp-buffer to the list of options enabled
      	by -fanalyzer.
      David Malcolm committed
    • analyzer: detect malloc, free, calloc within "std" [PR93959] · 9f00b22f
      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
    • coroutines: Update lambda capture handling to n4849. · cd14f288
      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
    • i386: Allow only registers with VALID_INT_MODE_P modes in movstrict<mode> [PR93997] · b80cbe2d
      *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
    • Add new test for PR tree-optimization/92982. · f26688fb
      gcc/testsuite/ChangeLog:
      	PR tree-optimization/92982
      	* gcc.dg/strlenopt-94.c: New test.
      Martin Sebor committed
    • c++: Add -std=gnu++20 option [PR93958] · e78e50d5
      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
    • Ensure sufficient size of variables used for module+submodule names. · f3c276ae
              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
    • libstdc++: Fix std::lexicographic_compare for unsigned char (PR 93972) · d112e173
      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
    • libstdc++: Rename __detail::__maybe_empty_t alias template · 4c391563
      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
    • coroutines: Don't make duplicate frame copies of awaitables. · 005530eb
      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
    • amdgcn: Extend reductions to all types · a5879399
      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
    • Fix testsuite regression due to recent IRA changes. · 0ce38183
      	* gcc.target/arm/fuse-caller-save.c: Update expected output.
      Jeff Law committed
    • Fix changelog typo · ac3148a3
      Segher Boessenkool committed
    • libstdc++: Add 'typename' to fix compilation with Clang · 5fad0003
      	* include/bits/ranges_algo.h (shift_right): Add 'typename' to
      	dependent type.
      Jonathan Wakely committed
    • Update comment to reflect optimization. · c9d92a57
      	* gcc.dg/vect/bb-slp-19.c: The comment
      	does not align with fact that we started
      	to SLP the testcase.
      Martin Liska committed
    • Remove duplicate declaration. · 8dd5d8f3
      	* libgcov-interface.c: Remove duplicate
      	declaration of __gcov_flush_mx.
      Martin Liska committed
    • Fix a libiberty testsuite failure · 3bb6abbf
      	* testsuite/demangle-expected: Update expected demangling of
      	enable_if pattern.
      Nick Clifton committed
    • lto: Also copy .note.gnu.property section · 57735060
      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
    • Fix typo in C++ standard version. · 917e56a9
      	* lto-wrapper.c: Fix typo in comment about
      	C++ standard version.
      Martin Liska committed
    • [testsuites] Update several scev/IVOPTs cases · 778a7735
      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
    • PR middle-end/92721 - checking ICE on attribute access redeclaration · 649e1741
      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
    • PR middle-end/93926 - ICE on a built-in redeclaration returning an integer instead of a pointer · 726e292d
      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
    • PR c/93812 - ICE on redeclaration of an attribute format function without protoype · a499c2f8
      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… · 1e9369c5
      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
    • Daily bump. · 750d061d
      GCC Administrator committed
  3. 01 Mar, 2020 6 commits