Skip to content
Snippets Groups Projects
  1. Aug 13, 2020
    • Jonathan Wakely's avatar
      libstdc++: Deprecate the --enable-cheaders=c_std configuration · 55484a0f
      Jonathan Wakely authored
      These headers do not offer any tangible benefit compared to the default
      c_global version. They are not actively maintained meaning that they
      have bugs which have already been fixed for the c_global headers.
      
      This change adds a warning if they are used, and requires a new
      --enable-cheaders-obsolete option to allow their use. Unless we receive
      reports from users who rely on the c_std headers they should be removed
      at some point in future.
      
      libstdc++-v3/ChangeLog:
      
      	* acinclude.m4 (GLIBCXX_ENABLE_CHEADERS): Warn if the c_std
      	option is used and fail unless --enable-cheaders-obsolete is
      	also used.
      	* configure: Regenerate.
      55484a0f
    • Andre Vehreschild's avatar
      Fix PR fortran/93671; ICE in reffing coarray alloc. comps. · e00464a5
      Andre Vehreschild authored
      Fix an ICE when in a coarray an allocatable component had another allocatable
      component.
      
      gcc/fortran/ChangeLog:
      
      2020-08-10  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/93671
      	* trans-array.c (structure_alloc_comps): Keep caf-mode when applying to
      	components; get the caf_token correctly for allocated scalar components.
      
      gcc/testsuite/ChangeLog:
      
      2020-08-10  Andre Vehreschild  <vehre@gcc.gnu.org>
      
      	PR fortran/93671
      	* gfortran.dg/coarray/pr93671.f90: New test.
      e00464a5
    • Richard Sandiford's avatar
      db461538
    • Kwok Cheung Yeung's avatar
      nvptx: Add support for subword compare-and-swap · 17dc08ed
      Kwok Cheung Yeung authored
      This adds support for __sync_val_compare_and_swap and
      __sync_bool_compare_and_swap for 1-byte and 2-byte long
      values, which are not natively supported on nvptx.
      
      Build and reg-tested on nvptx.
      Build and reg-tested libgomp on x86_64 with nvptx accelerator.
      
      2020-07-16  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	libgcc/
      	* config/nvptx/atomic.c: New.
      	* config/nvptx/t-nvptx (LIB2ADD): Add atomic.c.
      
      	gcc/testsuite/
      	* gcc.target/nvptx/ia64-sync-5.c: New.
      
      	libgomp/
      	* testsuite/libgomp.c-c++-common/reduction-16.c: New.
      17dc08ed
    • Martin Liska's avatar
      ipa: fix ICE in get_default_value · f9177021
      Martin Liska authored
      The patch aligns code with ipcp_bits_lattice::set_to_constant
      where we properly mask m_value with m_mask. The same should
      be done here.
      
      gcc/ChangeLog:
      
      	PR ipa/96482
      	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
      	with m_mask.
      
      gcc/testsuite/ChangeLog:
      
      	PR ipa/96482
      	* gcc.dg/ipa/pr96482-2.c: New test.
      f9177021
    • Matthew Krupcale's avatar
      docs: Fix typos in -fallow-argument-mismatch description · 2b5490f5
      Matthew Krupcale authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/96595
      	* invoke.texi: Fix typos.
      2b5490f5
    • Jakub Jelinek's avatar
      openmp: Add support for non-rectangular loops in taskloop construct · 2e47c8c6
      Jakub Jelinek authored
      2020-08-13  Jakub Jelinek  <jakub@redhat.com>
      
      	* gimplify.c (gimplify_omp_taskloop_expr): New function.
      	(gimplify_omp_for): Use it.  For OMP_FOR_NON_RECTANGULAR
      	loops adjust in outer taskloop the var-outer decls.
      	* omp-expand.c (expand_omp_taskloop_for_inner): Handle non-rectangular
      	loops.
      	(expand_omp_for): Don't reject non-rectangular taskloop.
      	* omp-general.c (omp_extract_for_data): Don't assert that
      	non-rectangular loops have static schedule, instead treat loop->m1
      	or loop->m2 as if loop->n1 or loop->n2 is non-constant.
      
      	* testsuite/libgomp.c/loop-22.c (main): Add some further tests.
      	* testsuite/libgomp.c/loop-23.c (main): Likewise.
      	* testsuite/libgomp.c/loop-24.c: New test.
      2e47c8c6
    • liuhongt's avatar
      Merge two define_insn: <avx512>_blendm<mode>, <avx512>_load<mode>_mask. · 7123217a
      liuhongt authored
      Those two define_insns have same pattern, and <avx512>_load<mode>_mask
      would always be matched since it show up earlier in the md file, and
      it may lose some opportunity in pass_reload since
      <avx512>_load<mode>_mask only have constraint "0C" for operand2, and
      "v" constraint in <avx512>_vblendm<mode> would never be matched.
      
      2020-07-21  Hongtao Liu  <hongtao.liu@intel.com>
      
      gcc/
      	PR target/96246
      	* config/i386/sse.md (<avx512>_load<mode>_mask,
      	<avx512>_load<mode>_mask): Extend to generate blendm
      	instructions.
      	(<avx512>_blendm<mode>, <avx512>_blendm<mode>): Change
      	define_insn to define_expand.
      
      gcc/testsuite/
      	* gcc.target/i386/avx512bw-pr96246-1.c: New test.
      	* gcc.target/i386/avx512bw-pr96246-2.c: New test.
      	* gcc.target/i386/avx512vl-pr96246-1.c: New test.
      	* gcc.target/i386/avx512vl-pr96246-2.c: New test.
      	* gcc.target/i386/avx512bw-vmovdqu16-1.c: Adjust test.
      	* gcc.target/i386/avx512bw-vmovdqu8-1.c: Ditto.
      	* gcc.target/i386/avx512f-vmovapd-1.c: Ditto.
      	* gcc.target/i386/avx512f-vmovaps-1.c: Ditto.
      	* gcc.target/i386/avx512f-vmovdqa32-1.c: Ditto.
      	* gcc.target/i386/avx512f-vmovdqa64-1.c: Ditto.
      	* gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
      	* gcc.target/i386/avx512vl-pr96246-1.c: Ditto.
      	* gcc.target/i386/avx512vl-pr96246-2.c: Ditto.
      	* gcc.target/i386/avx512vl-vmovapd-1.c: Ditto.
      	* gcc.target/i386/avx512vl-vmovaps-1.c: Ditto.
      	* gcc.target/i386/avx512vl-vmovdqa32-1.c: Ditto.
      	* gcc.target/i386/avx512vl-vmovdqa64-1.c: Ditto.
      7123217a
    • Hans-Peter Nilsson's avatar
      gcc.dg/pr94600-5.c .. -8.c: Align struct t0 explictly, as a type, PR middle-end/94600 · 5db1fa9b
      Hans-Peter Nilsson authored
      The bitfield-struct t0 in gcc.dg/pr94600-1.c ..-4.c is assigned to a
      pointer that is a (volatile-and-pointer-)cast literal, so gcc doesn't
      need to be otherwise told that the address is aligned.  But, variants
      pr94600-5.c ..-8.c are assigned through a "volatile t0 *", and rely on
      the *type* being naturally aligned, or that the machine has
      non-strict-alignment moves.
      
      Unfortunately, systems exist (for some definitions of exist) where
      such structs aren't always naturally aligned, for example if it
      contains only (small) bitfields, even though the size is a naturally
      accessible size.  Specifically, the mmix-knuth-mmixware port has only
      *byte* alignment for this struct.  (If an int is added to the struct,
      alignment is promoted.)  IOW, a prerequisite of the test is false: the
      struct doesn't have the same alignment as an integer of the same size.
      The effect is assignment in byte-size pieces, and the test fails.
      (For a non-volatile assignment, memcpy is called.)  That's easily
      fixable by defining the type as having a specific alignment.  This is
      also closer to the type in the original code, and also as the first
      variants aren't affected, no second thought or re-visit of pre-fixed
      compiler is needed.  I don't plan to back-port this to gcc-10 branch
      however.  I did sanity-check that the tests still pass on
      ppc64le-linux.
      
      gcc/testsuite:
      
      	PR middle-end/94600
      	* gcc.dg/pr94600-5.c, gcc.dg/pr94600-6.c, gcc.dg/pr94600-7.c,
      	gcc.dg/pr94600-8.c: Align t0 to 4-byte boundary.
      5db1fa9b
    • Marek Polacek's avatar
      c++: Fixing the wording of () aggregate-init [PR92812] · 2ec803e7
      Marek Polacek authored
      P1975R0 tweaks the static_cast wording: it says that "An expression e can be
      explicitly converted to a type T if [...] T is an aggregate type having a first
      element x and there is an implicit conversion sequence from e to the type of
      x."  This already works for classes, e.g.:
      
        struct Aggr { int x; int y; };
        Aggr a = static_cast<Aggr>(1);
      
      for which we create TARGET_EXPR <D.2111, {.x=1}>.
      
      The proposal also mentions "If T is ``array of unknown bound of U'',
      this direct-initialization defines the type of the expression as U[1]" which
      suggest that this should work for arrays (they're aggregates too, after all):
      
        int (&&r)[3] = static_cast<int[3]>(42);
        int (&&r2)[1] = static_cast<int[]>(42);
      
      So I handled that specifically in build_static_cast_1: wrap the
      expression in { } and initialize from that.  For the 'r' case above
      this creates TARGET_EXPR <D.2083, {42}>.
      
      There are multiple things in play, as usual, so the tests test brace
      elision, narrowing, explicit constructors, and lifetime extension too.
      I think it's in line with what we discussed on the core reflector.
      
      gcc/cp/ChangeLog:
      
      	PR c++/92812
      	* typeck.c (build_static_cast_1): Implement P1975R0 by allowing
      	static_cast to aggregate type.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/92812
      	* g++.dg/cpp2a/paren-init27.C: New test.
      	* g++.dg/cpp2a/paren-init28.C: New test.
      	* g++.dg/cpp2a/paren-init29.C: New test.
      	* g++.dg/cpp2a/paren-init30.C: New test.
      	* g++.dg/cpp2a/paren-init31.C: New test.
      	* g++.dg/cpp2a/paren-init32.C: New test.
      2ec803e7
    • GCC Administrator's avatar
      Daily bump. · afdd220a
      GCC Administrator authored
      afdd220a
  2. Aug 12, 2020
    • Roger Sayle's avatar
      PR target/96558: Only call ix86_expand_clear with GENERAL_REGS. · 32c69a56
      Roger Sayle authored
      The following patch tightens the predicates of the peephole2 from my recent
      "Integer min/max improvements patch" to only hoist clearing a register when
      that register is a general register.  Calling ix86_expand_clear with regs
      other than GENERAL_REGS is not supported.
      
      2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
      	    Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog
      	PR target/96558
      	* config/i386/i386.md (peephole2): Only reorder register clearing
      	instructions to allow use of xor for general registers.
      
      gcc/testsuite/ChangeLog
      	PR target/96558
      	* gcc.dg/pr96558.c: New test.
      32c69a56
    • Jonathan Wakely's avatar
      libstdc++: ChangeLog corrections · 86f87414
      Jonathan Wakely authored
      I got the name of the __stat64 type wrong in r11-2628 and missed the
      bugzilla PR number in r11-2632.
      86f87414
    • Jonathan Wakely's avatar
      libstdc++: Make self-move well-defined for containers [PR 85828] · c2fb0a1a
      Jonathan Wakely authored
      The C++ LWG recently confirmed that self-move assignment should not have
      undefined behaviour for standard containers (see the proposed resolution
      of LWG 2839). The result should be a valid but unspecified value, just
      like other times when a container is moved from.
      
      Our std::list, std::__cxx11::basic_string and unordered containers all
      have bugs which result in undefined behaviour.
      
      For std::list the problem is that we clear the previous contents using
      _M_clear() instead of clear(). This means the _M_next, _M_prev and
      _M_size members are not zeroed, and so after we "update" them (with
      their existing values), we are left with dangling pointers and a
      non-zero size, but no elements.
      
      For the unordered containers the problem is similar. _Hashtable first
      deallocates the existing contents, then takes ownership of the pointers
      from the RHS object (which has just had its contents deallocated so the
      pointers are dangling).
      
      For std::basic_string it's a little more subtle. When the string is
      local (i.e. fits in the SSO buffer) we use char_traits::copy to copy the
      contents from this->data() to __rhs.data(). When &__rhs == this that
      copy violates the precondition that the ranges don't overlap. We only
      need to check for self-move for this case where it's local, because the
      only other case that can be true for self-move is that it's non-local
      but the allocators compare equal. In that case the data pointer is
      neither deallocated nor leaked, so the result is well-defined.
      
      This patch also makes a small optimization for std::deque move
      assignment, to use the efficient move when is_always_equal is false, but
      the allocators compare equal at runtime.
      
      Finally, we need to remove all the Debug Mode checks which abort the
      program when a self-move is detected, because it's not undefined to do
      that.
      
      Before PR 85828 can be closed we should also look into fixing
      std::shuffle so it doesn't do any redundant self-swaps.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/85828
      	* include/bits/basic_string.h (operator=(basic_string&&)): Check
      	for self-move before copying with char_traits::copy.
      	* include/bits/hashtable.h (operator=(_Hashtable&&)): Check for
      	self-move.
      	* include/bits/stl_deque.h (_M_move_assign1(deque&&, false_type)):
      	Check for equal allocators.
      	* include/bits/stl_list.h (_M_move_assign(list&&, true_type)):
      	Call clear() instead of _M_clear().
      	* include/debug/formatter.h (__msg_self_move_assign): Change
      	comment.
      	* include/debug/macros.h (__glibcxx_check_self_move_assign):
      	(_GLIBCXX_DEBUG_VERIFY): Remove.
      	* include/debug/safe_container.h (operator=(_Safe_container&&)):
      	Remove assertion check for safe move and make it well-defined.
      	* include/debug/safe_iterator.h (operator=(_Safe_iterator&&)):
      	Remove assertion check for self-move.
      	* include/debug/safe_local_iterator.h
      	(operator=(_Safe_local_iterator&&)): Likewise.
      	* testsuite/21_strings/basic_string/cons/char/self_move.cc: New test.
      	* testsuite/23_containers/deque/cons/self_move.cc: New test.
      	* testsuite/23_containers/forward_list/cons/self_move.cc: New test.
      	* testsuite/23_containers/list/cons/self_move.cc: New test.
      	* testsuite/23_containers/set/cons/self_move.cc: New test.
      	* testsuite/23_containers/unordered_set/cons/self_move.cc: New test.
      	* testsuite/23_containers/vector/cons/self_move.cc: New test.
      c2fb0a1a
    • Clément Chigot's avatar
      libgo: correctly handle AIX FAT library creation · d040555a
      Clément Chigot authored
      The previous patch wasn't working everytime. Especially when AR had
      "-X32_64", the new .so would replace the default one and not just being
      added.
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/247377
      d040555a
    • Martin Liska's avatar
      ipa: fix bit CPP when combined with IPA bit CP · d58f078c
      Martin Liska authored
      As mentioned in the PR, let's consider the following example:
      
      int
      __attribute__((noinline))
      foo(int arg)
      {
        if (arg == 3)
          return 1;
        if (arg == 4)
          return 123;
      
        __builtin_unreachable ();
      }
      
      during WPA we find all calls of the function
      (yes the call with value 5 is UBSAN):
      
        Node: foo/0:
          param [0]: 5 [loc_time: 4, loc_size: 2, prop_time: 0, prop_size: 0]
                     3 [loc_time: 3, loc_size: 3, prop_time: 0, prop_size: 0]
               ctxs: VARIABLE
               Bits: value = 0x5, mask = 0x6
      
      in LTRANS we have the following VRP info:
      
        # RANGE [3, 3] NONZERO 3
      
      when we AND masks in get_default_value we end up with 6 & 3 = 2 (0x010).
      That means the only second (least significant bit) is unknown and
      value (5 = 0x101) & ~mask gives us either 7 (0x111) or 5 (0x101).
      
      That's why if (arg_2(D) == 3) gets optimized to false.
      
      gcc/ChangeLog:
      
      	PR ipa/96482
      	* ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits
      	for bits that are unknown.
      	(ipcp_bits_lattice::set_to_constant): Likewise.
      	* tree-ssa-ccp.c (get_default_value): Add sanity check that
      	IPA CP bit info has all bits set to zero in bits that
      	are unknown.
      
      gcc/testsuite/ChangeLog:
      
      	PR ipa/96482
      	* gcc.dg/ipa/pr96482.c: New test.
      d58f078c
    • Peixin Qiao's avatar
      AArch64: Add if condition in aarch64_function_value [PR96479] · b418ccb3
      Peixin Qiao authored
      Report diagnostic information instead of ICE if it generats fp/simd for
      return register when fp/simd is disabled by -mgeneral-regs-only.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64.c (aarch64_function_value): Add if
      	condition to check ag_mode after entering if condition of
      	aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is
      	set as false by -mgeneral-regs-only, report the diagnostic
      	information of -mgeneral-regs-only imcompatible with the use
      	of fp/simd register(s).
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that
      	-mgeneral-regs-only is compatible with the use of vector type
      	used in the test case.
      b418ccb3
    • Tobias Burnus's avatar
      Fortran: Add support for OpenMP's nontemporal clause · 21cfe724
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* gfortran.h: Add OMP_LIST_NONTEMPORAL.
      	* dump-parse-tree.c (show_omp_clauses): Dump it
      	* openmp.c (enum omp_mask1): Add OMP_CLAUSE_NOTEMPORAL.
      	(OMP_SIMD_CLAUSES): Add it.
      	(gfc_match_omp_clauses): Match nontemporal clause.
      	* trans-openmp.c (gfc_trans_omp_clauses): Process
      	nontemporal clause.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/nontemporal-1.f90: New test.
      	* gfortran.dg/gomp/nontemporal-2.f90: New test.
      21cfe724
    • Jakub Jelinek's avatar
      Fix up flag_cunroll_grow_size handling in presence of optimize attr [PR96535] · fe9458c2
      Jakub Jelinek authored
      As the testcase in the PR shows (not included in the patch, as
      it seems quite fragile to observe unrolling in the IL), the introduction of
      flag_cunroll_grow_size broke optimize attribute related to loop unrolling.
      The problem is that the new option flag is set (if not set explicitly) only
      in process_options and in rs6000_option_override_internal (and there only if
      global_init_p).  So, this means that while it is Optimization option, it
      will only be set based on the command line -funroll-loops/-O3/-fpeel-loops
      or -funroll-all-loops, which means that if command line does include any of
      those, it is enabled even for functions that will through optimize attribute
      have all of those disabled, and if command line does not include those,
      it will not be enabled for functions that will through optimize attribute
      have any of those enabled.
      
      process_options is called just once, so IMHO it should be handling only
      non-Optimization option adjustments (various other options suffer from that
      too, but as this is a regression from 10.1 on the 10 branch, changing those
      is not appropriate).  Similarly, rs6000_option_override_internal is called
      only once (with global_init_p) and then for target attribute handling, but
      not for optimize attribute handling.
      
      This patch moves the unrolling related handling from process_options into
      finish_options which is invoked whenever the options are being finalized,
      and the rs6000 specific parts into the override_options_after_change hook
      which is called for optimize attribute handling (and unfortunately also
      th cfun changes, but what the hook does is cheap) and I've added a call to
      that from rs6000_override_options_internal, so it is also called on cmdline
      processing and for target attribute.
      
      Furthermore, it stops using AUTODETECT_VALUE, which can work only once,
      and instead uses the global_options_set.x_... flags.
      
      2020-08-12  Jakub Jelinek  <jakub@redhat.com>
      
      	PR tree-optimization/96535
      	* toplev.c (process_options): Move flag_unroll_loops and
      	flag_cunroll_grow_size handling from here to ...
      	* opts.c (finish_options): ... here.  For flag_cunroll_grow_size,
      	don't check for AUTODETECT_VALUE, but instead check
      	opts_set->x_flag_cunroll_grow_size.
      	* common.opt (funroll-completely-grow-size): Default to 0.
      	* config/rs6000/rs6000.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE):
      	Redefine.
      	(rs6000_override_options_after_change): New function.
      	(rs6000_option_override_internal): Call it.  Move there the
      	flag_cunroll_grow_size, unroll_only_small_loops and
      	flag_rename_registers handling.
      fe9458c2
    • Tom de Vries's avatar
      [testsuite, nvptx] Borrow ia64-sync-*.c test-cases in gcc.target/nvptx · a12026e9
      Tom de Vries authored
      In absence of nvptx-enabling for effective target sync_int_long (see PR96494),
      copy a few test-cases to gcc.target/nvptx.
      
      Tested on nvptx.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/nvptx/ia64-sync-1.c: New test.
      	* gcc.target/nvptx/ia64-sync-2.c: New test.
      	* gcc.target/nvptx/ia64-sync-3.c: New test.
      	* gcc.target/nvptx/ia64-sync-4.c: New test.
      a12026e9
    • Kwok Cheung Yeung's avatar
      Fix gcc.dg/ia64-sync-5.c for architectures with unsigned char as default (PR 96519) · 36507a2c
      Kwok Cheung Yeung authored
      If char is unsigned, then comparisons of the char array elements against
      negative integers in the test will fail as values in the array will always
      be positive, and will remain so when promoted to signed int.
      
      2020-08-12  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	PR testsuite/96519
      
      	gcc/testsuite/
      	* gcc.dg/ia64-sync-5.c (AC, init_qi, test_qi): Change element type to
      	signed char.
      36507a2c
    • Tom de Vries's avatar
      [testsuite] Add effective target large_initializer · fb9b3c0f
      Tom de Vries authored
      When compiling builtin-object-size-21.c for nvptx, cc1 times out while
      emitting the initializer for global variable xm3_3.
      
      With x86_64, we are able to emit the initializer with a few lines of assembly:
      ...
      xm3_3:
              .byte   0
              .zero   9223372036854775803
              .byte   1
              .byte   2
              .byte   3
      ...
      but with nvptx, we don't have some something similar available, and thus
      generate:
      ...
        .visible .global .align 1 .u32 xm3_3[2305843009213693952] =
        { 0, 0, 0, ...
      ...
      
      Introduce an effective target large_initializer, returning false for nvptx,
      and require it for test-cases with large initializers.
      
      Tested on nvptx with make check-gcc.
      
      gcc/testsuite/ChangeLog:
      
      	PR testsuite/96566
      	* lib/target-supports.exp (check_effective_target_large_initializer):
      	New proc.
      	* gcc.dg/builtin-object-size-21.c: Require large_initializer.
      	* gcc.dg/strlenopt-55.c: Same.
      fb9b3c0f
    • Tom de Vries's avatar
      [nvptx] Fix array dimension in nvptx_assemble_decl_begin · b9c7fe59
      Tom de Vries authored
      When compiling test-case builtin-object-size-21.c, cc1 emits:
      ...
        .visible .global .align 1 .u32 xm3_3[-2305843009213693951] =
      ...
      for:
      ...
      struct Ax_m3 { char a[PTRDIFF_MAX - 3], ax[]; };
      
      struct Ax_m3 xm3_3 = { { 0 }, { 1, 2, 3 } };
      ...
      
      Fix this by:
      - changing the printing format for unsigned HOST_WIDE_INT init_frag.remaining
        to HOST_WIDE_INT_PRINT_UNSIGNED
      - changing the type of local variable elt_size in nvptx_assemble_decl_begin
        to unsigned HOST_WIDE_INT.
      such that we have:
      ...
        .visible .global .align 1 .u32 xm3_3[2305843009213693952] =
      ...
      where 2305843009213693952 == 0x2000000000000000, so the array is claiming
      0x8000000000000000 bytes, which is one more than PTRDIFF_MAX.  This is due
      to using .u32 instead of .u8, so strictly speaking we should downgrade to
      using .u8 in this case, but that corner-case problem doesn't look urgent
      enough to fix in this commit.
      
      Build on nvptx, tested with make check-gcc.
      
      gcc/ChangeLog:
      
      	* config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Make elt_size an
      	unsigned HOST_WIDE_INT.  Print init_frag.remaining using
      	HOST_WIDE_INT_PRINT_UNSIGNED.
      b9c7fe59
    • Senthil Kumar Selvaraj's avatar
      MAINTAINERS: Update my email address · fb8e8392
      Senthil Kumar Selvaraj authored
      2020-08-12  Senthil Kumar Selvaraj  <saaadhu@gcc.gnu.org>
      
      	* MAINTAINERS: Update my email address.
      fb8e8392
    • Christophe Lyon's avatar
      testsuite: Fix gcc.target/arm/stack-protector-1.c for Cortex-M · 6606fdc0
      Christophe Lyon authored
      The stack-protector-1.c test fails when compiled for Cortex-M:
      - for Cortex-M0/M1, str r0, [sp #-8]! is not supported
      - for Cortex-M3/M4..., the assembler complains that "use of r13 is
        deprecated"
      
      This patch replaces the str instruction with
           sub   sp, sp, #8
           str r0, [sp]
      and removes the check for r13, which is unlikely to leak the canary
      value.
      
      2020-08-11  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/testsuite/
      	* gcc.target/arm/stack-protector-1.c: Adapt code to Cortex-M
      	restrictions.
      6606fdc0
    • Christophe Lyon's avatar
      testsuite: Fix gcc.target/arm/multilib.exp use of gcc_opts · 73d2b6d4
      Christophe Lyon authored
      This patch fixes an incorrect parameter passing for $gcc_opts, which
      produces a DejaGnu error: (DejaGnu) proc "gcc_opts" does not exist.
      
      2020-08-12  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/testsuite/
      	* gcc.target/arm/multilib.exp: Fix parameter passing for gcc_opts.
      73d2b6d4
    • Roger Sayle's avatar
      x86_64: Use peephole2 to eliminate redundant moves. · 778c15d3
      Roger Sayle authored
      The recent fix for mul_widen_cost revealed an interesting
      quirk of ira/reload register allocation on x86_64.  As shown in
      https://gcc.gnu.org/pipermail/gcc-patches/2020-August/551648.html
      for gcc.target/i386/pr71321.c we generate the following code that
      performs unnecessary register shuffling.
      
              movl    $-51, %edx
              movl    %edx, %eax
              mulb    %dil
      
      Various discussions in bugzilla seem to point to reload preferring
      not to load constants directly into CLASS_LIKELY_SPILLED_P registers.
      Whatever the cause, one solution (workaround), that doesn't involve
      rewriting a register allocator, is to use peephole2 to spot this
      wierdness and eliminate it.  With this peephole2 the above three
      instructions (from pr71321.c) are replaced with:
      
              movl    $-51, %eax
              mulb    %dil
      
      2020-08-12  Roger Sayle  <roger@nextmovesoftware.com>
      	    Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog
      	* config/i386/i386.md (peephole2): Reduce unnecessary
      	register shuffling produced by register allocation.
      778c15d3
    • Aldy Hernandez's avatar
      Replace std::vector<> usage in ipa-fnsummary.c with GCC's vec<>. · 82c4b78d
      Aldy Hernandez authored
      gcc/ChangeLog:
      
      	* ipa-fnsummary.c (evaluate_conditions_for_known_args): Use vec<>
      	instead of std::vector<>.
      	(evaluate_properties_for_edge): Same.
      	(ipa_fn_summary_t::duplicate): Same.
      	(estimate_ipcp_clone_size_and_time): Same.
      	* vec.h (<T, A, vl_embed>::embedded_size): Change vec_embedded
      	type to contain a char[].
      82c4b78d
    • Andreas Krebbel's avatar
      IBM Z: Fix PR96308 · 220ffae4
      Andreas Krebbel authored
      For the testcase a symbol with a TLS reloc and an unary minus is being
      generated.  The backend didn't handle this correctly.
      
      In s390_cannot_force_const_mem an unary minus on a symbolic constant
      is rejected now since gas would not allow this.
      
      legitimize_tls_address now makes the NEG rtx the outermost operation
      by pulling it out of the CONST rtx.
      
      gcc/ChangeLog:
      
      	PR target/96308
      	* config/s390/s390.c (s390_cannot_force_const_mem): Reject an
      	unary minus for everything not being a numeric constant.
      	(legitimize_tls_address): Move a NEG out of the CONST rtx.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/96308
      	* g++.dg/pr96308.C: New test.
      220ffae4
    • Andreas Krebbel's avatar
      IBM Z: Fix PR96456 · 1d17c38a
      Andreas Krebbel authored
      The testcase failed because our backend refuses to generate vector
      compare instructions for signaling operators with -fno-trapping-math
      -fno-finite-math-only.
      
      gcc/ChangeLog:
      
      	PR target/96456
      	* config/s390/s390.h (TARGET_NONSIGNALING_VECTOR_COMPARE_OK): New
      	macro.
      	* config/s390/vector.md (vcond_comparison_operator): Use new macro
      	for the check.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/96456
      	* gcc.target/s390/pr96456.c: New test.
      1d17c38a
    • Alan Modra's avatar
      Re: PR96493, powerpc local call linkage failure · 2ba0674c
      Alan Modra authored
      	PR target/96525
      	* gcc.target/powerpc/pr96493.c: Make it a link test when no
      	power10_hw.  Require power10_ok.
      2ba0674c
    • GCC Administrator's avatar
      Daily bump. · a6493809
      GCC Administrator authored
      a6493809
  3. Aug 11, 2020
    • François Dumont's avatar
      libstdc++: Implement DR 526 on [forward_]list remove_if/unique [PR 91620] · 8b7af071
      François Dumont authored
      Respect DR 526 in implementation of std::[forward_]list remove/remove_if/unique.
      [forward_]list::remove was already implementing it but the implementation has
      been modified to generalize the following pattern. All nodes to remove are
      collected in an intermediate [forward_]list which purpose is just to be
      detroyed once out of scope.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/91620
      	* include/bits/forward_list.tcc (forward_list<>::remove): Collect nodes
      	to destroy in an intermediate forward_list.
      	(forward_list<>::remove_if, forward_list<>::unique): Likewise.
      	* include/bits/list.tcc (list<>::remove, list<>::unique): Likewise.
      	(list<>::remove_if): Likewise.
      	* include/debug/forward_list (forward_list<>::_M_erase_after): Remove.
      	(forward_list<>::erase_after): Adapt.
      	(forward_list<>::remove, forward_list<>::remove_if): Collect nodes to
      	destroy in an intermediate forward_list.
      	(forward_list<>::unique): Likewise.
      	* include/debug/list (list<>::remove, list<>::unique): Likewise.
      	(list<>::remove_if): Likewise.
      	* testsuite/23_containers/forward_list/operations/91620.cc: New test.
      	* testsuite/23_containers/list/operations/91620.cc: New test.
      8b7af071
    • Ian Lance Taylor's avatar
      internal/syscall/unix: restore ppc build tag · 8f9fd3c4
      Ian Lance Taylor authored
      It was accidentally lost in the 1.15rc1 merge.
      
      Fixes PR go/96567
      
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/247843
      8f9fd3c4
    • David Edelsohn's avatar
      testsuite: remove xfail flifetime-dse[24].C · 09c683a3
      David Edelsohn authored
      	The testcases no longer are failing due to operator new, so
      remove the xfails to reduce testsuite summary noise.
      
      gcc/testsuite/ChangeLog:
      
      2020-08-11  David Edelsohn  <dje.gcc@gmail.com>
      
      	* g++.dg/opt/flifetime-dse2.C: Remove AIX xfail.
      	* g++.dg/opt/flifetime-dse4.C: Remove AIX xfail.
      09c683a3
    • Tom de Vries's avatar
      [testsuite] Add missing require-effective-target directives in gcc.dg · ebd20377
      Tom de Vries authored
      Add some missing require-effect-targets directives (alloca, indirect_jumps,
      label_values and nonlocal_goto).
      
      Tested on nvptx.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/Warray-bounds-46.c: Add missing require-effective-target
      	directive.
      	* gcc.dg/Warray-bounds-48.c: Same.
      	* gcc.dg/Warray-bounds-50.c: Same.
      	* gcc.dg/Wreturn-local-addr-2.c: Same.
      	* gcc.dg/Wreturn-local-addr-3.c: Same.
      	* gcc.dg/Wreturn-local-addr-4.c: Same.
      	* gcc.dg/Wreturn-local-addr-6.c: Same.
      	* gcc.dg/Wstack-usage.c: Same.
      	* gcc.dg/Wstringop-overflow-15.c: Same.
      	* gcc.dg/Wstringop-overflow-23.c: Same.
      	* gcc.dg/Wstringop-overflow-25.c: Same.
      	* gcc.dg/Wstringop-overflow-27.c: Same.
      	* gcc.dg/Wstringop-overflow-39.c: Same.
      	* gcc.dg/analyzer/alloca-leak.c: Same.
      	* gcc.dg/analyzer/data-model-1.c: Same.
      	* gcc.dg/analyzer/data-model-16.c: Same.
      	* gcc.dg/analyzer/malloc-1.c: Same.
      	* gcc.dg/analyzer/malloc-paths-8.c: Same.
      	* gcc.dg/analyzer/pr93546.c: Same.
      	* gcc.dg/analyzer/setjmp-1.c: Same.
      	* gcc.dg/analyzer/setjmp-2.c: Same.
      	* gcc.dg/analyzer/setjmp-3.c: Same.
      	* gcc.dg/analyzer/setjmp-4.c: Same.
      	* gcc.dg/analyzer/setjmp-5.c: Same.
      	* gcc.dg/analyzer/setjmp-6.c: Same.
      	* gcc.dg/analyzer/setjmp-7.c: Same.
      	* gcc.dg/analyzer/setjmp-7a.c: Same.
      	* gcc.dg/analyzer/setjmp-8.c: Same.
      	* gcc.dg/analyzer/setjmp-9.c: Same.
      	* gcc.dg/analyzer/setjmp-pr93378.c: Same.
      	* gcc.dg/gimplefe-44.c: Same.
      	* gcc.dg/pr84131.c: Same.
      	* gcc.dg/pr93986.c: Same.
      	* gcc.dg/pr95133.c: Same.
      	* gcc.dg/pr95857.c: Same.
      	* gcc.dg/strlenopt-83.c: Same.
      	* gcc.dg/strlenopt-84.c: Same.
      	* gcc.dg/strlenopt-91.c: Same.
      	* gcc.dg/uninit-32.c: Same.
      	* gcc.dg/uninit-36.c: Same.
      ebd20377
    • Jonathan Wakely's avatar
      libstdc++: Fix failing tests for AIX · fe8d7fec
      Jonathan Wakely authored
      These two tests fail on AIX because <sys/thread.h> defines struct thread
      in the global namespace (despite it not being a reserved name). That
      means the using-declaration that adds it to the global namespace causes
      a redeclaration error.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/30_threads/thread/cons/84535.cc: Use a custom
      	namespace.
      	* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
      fe8d7fec
    • Jonathan Wakely's avatar
      libstdc++: Make Networking TS work without gthreads [PR 89760] · 18095be1
      Jonathan Wakely authored
      Make the experimental Networking TS code work without std::mutex and
      std::condition_variable.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/89760
      	* include/experimental/executor [!_GLIBCXX_HAS_GTHREADS]:
      	(execution_context::mutex_type): Define dummy mutex type.
      	(system_context): Use execution_context::mutex_type.
      	(system_context) [!_GLIBCXX_HAS_GTHREADS]: Define dummy
      	thread and condition variable types.
      	[!_GLIBCXX_HAS_GTHREADS] (system_context::_M_run()): Do not
      	define.
      	(system_context::_M_post) [!_GLIBCXX_HAS_GTHREADS]: Throw
      	an exception when threads aren't available.
      	(strand::running_in_this_thread()): Defer to _M_state.
      	(strand::_State::running_in_this_thread()): New function.
      	(use_future_t): Do not depend on _GLIBCXX_USE_C99_STDINT_TR1.
      	* include/experimental/io_context (io_context): Use the
      	execution_context::mutex_type alias. Replace stack of thread
      	IDs with counter.
      	* testsuite/experimental/net/execution_context/use_service.cc:
      	Enable test for non-pthread targets.
      18095be1
    • Jonathan Wakely's avatar
      libstdc++: Make net::system_context tag type constructor explicit · 2a6918e4
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/experimental/executor (system_context::a__tag): Make
      	default constructor explicit.
      2a6918e4
    • Jonathan Wakely's avatar
      libstdc++: Fix net::system_context stop condition · 61759518
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/experimental/executor (system_context::_M_run()):
      	Fix predicate.
      	* testsuite/experimental/net/system_context/1.cc: New test.
      61759518
Loading