Skip to content
Snippets Groups Projects
  1. Nov 11, 2022
    • Martin Liska's avatar
      jit: doc: Use shared Indices and tables · 3b54cc9d
      Martin Liska authored
      Apart from that, do not use leading .rst names in toctree.
      
      ChangeLog:
      
      	* doc/indices-and-tables.rst: Rename Indexes to Indices.
      
      gcc/jit/ChangeLog:
      
      	* doc/cp/index.rst: Remove trailing .rst in toctree.
      	* doc/cp/intro/index.rst: Likewise.
      	* doc/cp/topics/index.rst: Likewise.
      	* doc/index.rst: Likewise.
      	* doc/intro/index.rst: Likewise.
      	* doc/topics/index.rst: Likewise.
      	* doc/indices-and-tables.rst: New file.
      3b54cc9d
    • Martin Liska's avatar
      doc: update sphinx-build -j auto comment · 02698e21
      Martin Liska authored
      ChangeLog:
      
      	* doc/Makefile: Update comment.
      02698e21
    • Martin Liska's avatar
      sphinx: stop using parallel mode · 08fd14f9
      Martin Liska authored
      Noticed that the documentation build can stuck on a machine with
      many cores (160) and I identified a real sphinx problem:
      https://github.com/sphinx-doc/sphinx/issues/10969
      
      Note the parallel can help just for some manuals and it is not critical
      for us.
      
      ChangeLog:
      
      	* doc/Makefile: Disable -j auto.
      08fd14f9
    • Martin Liska's avatar
      changelog: check for space after tab · 999c14cf
      Martin Liska authored
      contrib/ChangeLog:
      
      	* gcc-changelog/git_commit.py: Check for a space after leading
      	tab.
      	* gcc-changelog/test_email.py: Likewise.
      	* gcc-changelog/test_patches.txt: Likewise.
      999c14cf
    • Ju-Zhe Zhong's avatar
      RISC-V: Add RVV registers register spilling · 5576518a
      Ju-Zhe Zhong authored
      
      This patch support RVV scalable register spilling.
      prologue && epilogue handling pick up prototype from Monk Chiang <monk.chiang@sifive.com>.
      Co-authored-by: default avatarMonk Chiang <monk.chiang@sifive.com>
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv-v.cc (emit_pred_move): Adjust for scalable register spilling.
      	(legitimize_move): Ditto.
      	* config/riscv/riscv.cc (riscv_v_adjust_scalable_frame): New function.
      	(riscv_first_stack_step): Adjust for scalable register spilling.
      	(riscv_expand_prologue): Ditto.
      	(riscv_expand_epilogue): Ditto.
      	(riscv_dwarf_poly_indeterminate_value): New function.
      	(TARGET_DWARF_POLY_INDETERMINATE_VALUE): New target hook support for register spilling.
      	* config/riscv/riscv.h (RISCV_DWARF_VLENB): New macro.
      	(RISCV_PROLOGUE_TEMP2_REGNUM): Ditto.
      	(RISCV_PROLOGUE_TEMP2): Ditto.
      	* config/riscv/vector-iterators.md: New iterators.
      	* config/riscv/vector.md (*mov<mode>): Fix it for register spilling.
      	(*mov<mode>_whole): New pattern.
      	(*mov<mode>_fract): New pattern.
      	(@pred_mov<mode>): Fix it for register spilling.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/riscv/rvv/base/macro.h: New test.
      	* gcc.target/riscv/rvv/base/spill-1.c: New test.
      	* gcc.target/riscv/rvv/base/spill-10.c: New test.
      	* gcc.target/riscv/rvv/base/spill-11.c: New test.
      	* gcc.target/riscv/rvv/base/spill-12.c: New test.
      	* gcc.target/riscv/rvv/base/spill-2.c: New test.
      	* gcc.target/riscv/rvv/base/spill-3.c: New test.
      	* gcc.target/riscv/rvv/base/spill-4.c: New test.
      	* gcc.target/riscv/rvv/base/spill-5.c: New test.
      	* gcc.target/riscv/rvv/base/spill-6.c: New test.
      	* gcc.target/riscv/rvv/base/spill-7.c: New test.
      	* gcc.target/riscv/rvv/base/spill-8.c: New test.
      	* gcc.target/riscv/rvv/base/spill-9.c: New test.
      5576518a
    • Jonathan Wakely's avatar
      libstdc++: Fix tests with non-const operator== · fbad7a74
      Jonathan Wakely authored
      These tests fail in strict -std=c++20 mode but their equality ops don't
      need to be non-const, it looks like an accident.
      
      This fixes two FAILs with -std=c++20:
      FAIL: 20_util/tuple/swap.cc (test for excess errors)
      FAIL: 26_numerics/valarray/87641.cc (test for excess errors)
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/20_util/tuple/swap.cc (MoveOnly::operator==): Add
      	const qualifier.
      	* testsuite/26_numerics/valarray/87641.cc (X::operator==):
      	Likewise.
      fbad7a74
    • Jonathan Wakely's avatar
      libstdc++: Add missing definition for <charconv> in C++14 mode · f54ae4da
      Jonathan Wakely authored
      We support <charconv> in C++14 as an extension, but that means that
      constexpr static data members are not implicitly inline. Add an
      out-of-class definition for C++14 mode.
      
      This fixes a FAIL when -std=gnu++14 is used:
      FAIL: 20_util/from_chars/1.cc (test for excess errors)
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/charconv (__from_chars_alnum_to_val_table::value):
      	[!__cpp_inline_variables]: Add non-inline definition.
      f54ae4da
    • Jonathan Wakely's avatar
      libstdc++: Fix test that uses C++17 variable template in C++14 · 56d2222c
      Jonathan Wakely authored
      This test fails if run with -std=gnu++14 because it should be using
      is_convertible instead of is_convertible_v.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/experimental/propagate_const/observers/107525.cc:
      	Use type trait instead of C++17 variable template.
      56d2222c
    • Jonathan Wakely's avatar
      libstdc++: Avoid redundant checks in std::use_facet [PR103755] · b3ac43a3
      Jonathan Wakely authored
      We do not need to do bounds checks or a runtime dynamic_cast when using
      std::has_facet and std::use_facet to access the default facets that are
      guaranteed to be present in every std::locale object. We can just index
      straight into the array and use a static_cast for the conversion.
      
      This patch adds a new std::__try_use_facet function that is like
      std::use_facet but returns a pointer, so can be used to implement both
      std::has_facet and std::use_facet. We can then do the necessary
      metaprogramming to skip the redundant checks in std::__try_use_facet.
      
      To avoid having to export (or hide) instantiations of the new function
      from libstdc++.so the instantiations are given hidden visibility. This
      allows them to be used in the library, but user code will instantiate it
      again using the definition in the header. That would happen anyway,
      because there are no explicit instantiation declarations for any of
      std::has_facet, std::use_facet, or the new std::__try_use_facet.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/103755
      	* config/abi/pre/gnu.ver: Tighten patterns for facets in the
      	base version. Add exports for __try_use_facet.
      	* include/bits/basic_ios.tcc (basic_ios::_M_cache_locale): Use
      	__try_use_facet instead of has_facet and use_facet.
      	* include/bits/fstream.tcc (basic_filebuf::basic_filebuf()):
      	Likewise.
      	(basic_filebuf::imbue): Likewise.
      	* include/bits/locale_classes.h (locale, locale::id)
      	(locale::_Impl): Declare __try_use_facet as a friend.
      	* include/bits/locale_classes.tcc (__try_use_facet): Define new
      	function template with special cases for default facets.
      	(has_facet, use_facet): Call __try_use_facet.
      	* include/bits/locale_facets.tcc (__try_use_facet): Declare
      	explicit instantiations.
      	* include/bits/locale_facets_nonio.tcc (__try_use_facet):
      	Likewise.
      	* src/c++11/locale-inst-monetary.h (INSTANTIATE_FACET_ACCESSORS):
      	Use new macro for facet accessor instantiations.
      	* src/c++11/locale-inst-numeric.h (INSTANTIATE_FACET_ACCESSORS):
      	Likewise.
      	* src/c++11/locale-inst.cc (INSTANTIATE_USE_FACET): Define new
      	macro for instantiating __try_use_facet and use_facet.
      	(INSTANTIATE_FACET_ACCESSORS): Define new macro for also
      	defining has_facet.
      	* src/c++98/compatibility-ldbl.cc (__try_use_facet):
      	Instantiate.
      	* testsuite/22_locale/ctype/is/string/89728_neg.cc: Adjust
      	expected errors.
      b3ac43a3
    • Jonathan Wakely's avatar
      c-family: Support #pragma region/endregion [PR85487] · d3fe767c
      Jonathan Wakely authored
      These pragmas are used by some editors to mark regions of code for
      grouping and folding. GCC should silently ignore them, rather than
      giving -Wunknown-pragmas warnings.
      
      	PR c/85487
      
      gcc/ChangeLog:
      
      	* doc/cpp/pragmas.rst (Pragmas): Document region pragmas.
      
      gcc/c-family/ChangeLog:
      
      	* c-pragma.cc (handle_pragma_ignore): New function.
      	(init_pragma): Register region and endregion pragmas.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/pragma-region.c: New test.
      d3fe767c
    • Haochen Jiang's avatar
      i386: Add ISA check for newly introduced prefetch builtins. · 21de01f5
      Haochen Jiang authored
      Hi all,
      
      As Hongtao said, the fail on pentiumpro is caused by missing ISA check
      since we are using emit_insn () through new builtins and it won't check
      if the TARGET matches. Previously, the builtin in middle-end will check
      that.
      
      On pentiumpro, we won't have anything that supports any prefetch so that
      it dropped into the pattern and then failed.
      
      I have added the restrictions just like what middle-end builtin_prefetch
      does. Also I added missing checks for PREFETCHI. Ok for trunk?
      
      BRs,
      Haochen
      
      gcc/ChangeLog:
      
      	* config/i386/i386-builtin.def (BDESC): Add
      	OPTION_MASK_ISA2_PREFETCHI for prefetchi builtin.
      	* config/i386/i386-expand.cc (ix86_expand_builtin):
      	Add ISA check before emit_insn.
      	* config/i386/prfchiintrin.h: Add target for intrin.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/prefetchi-5.c: New test.
      21de01f5
    • GCC Administrator's avatar
      Daily bump. · f225b813
      GCC Administrator authored
      f225b813
  2. Nov 10, 2022
    • David Malcolm's avatar
      analyzer: new warning: -Wanalyzer-deref-before-check [PR99671] · 5c6546ca
      David Malcolm authored
      
      This patch implements a new -Wanalyzer-deref-before-check within
      -fanalyzer.  It complains about code paths in which a pointer is checked
      for NULL after it has already been dereferenced.
      
      For example, for the testcase in PR 77432 the diagnostic emits:
      deref-before-check-1.c: In function 'test_from_pr77432':
      deref-before-check-1.c:6:8: warning: check of 'a' for NULL after already dereferencing it [-Wanalyzer-deref-before-check]
          6 |     if (a)
            |        ^
        'test_from_pr77432': events 1-2
          |
          |    5 |     int b = *a;
          |      |         ^
          |      |         |
          |      |         (1) pointer 'a' is dereferenced here
          |    6 |     if (a)
          |      |        ~
          |      |        |
          |      |        (2) pointer 'a' is checked for NULL here but it was already dereferenced at (1)
          |
      
      and in PR 77425 we had an instance of this hidden behind a
      macro, which the diagnostic complains about as follows:
      
      deref-before-check-pr77425.c: In function 'get_odr_type':
      deref-before-check-pr77425.c:35:10: warning: check of 'odr_types_ptr' for NULL after already dereferencing it [-Wanalyzer-deref-before-check]
         35 |       if (odr_types_ptr)
            |          ^
        'get_odr_type': events 1-3
          |
          |   27 |   if (cond)
          |      |      ^
          |      |      |
          |      |      (1) following 'false' branch...
          |......
          |   31 |   else if (other_cond)
          |      |           ~~~~~~~~~~~
          |      |           ||
          |      |           |(2) ...to here
          |      |           (3) following 'true' branch...
          |
        'get_odr_type': event 4
          |
          |   11 | #define odr_types (*odr_types_ptr)
          |      |                   ~^~~~~~~~~~~~~~~
          |      |                    |
          |      |                    (4) ...to here
      deref-before-check-pr77425.c:33:7: note: in expansion of macro 'odr_types'
          |   33 |       odr_types[val->id] = 0;
          |      |       ^~~~~~~~~
          |
        'get_odr_type': event 5
          |
          |   11 | #define odr_types (*odr_types_ptr)
          |      |                   ~^~~~~~~~~~~~~~~
          |      |                    |
          |      |                    (5) pointer 'odr_types_ptr' is dereferenced here
      deref-before-check-pr77425.c:33:7: note: in expansion of macro 'odr_types'
          |   33 |       odr_types[val->id] = 0;
          |      |       ^~~~~~~~~
          |
        'get_odr_type': event 6
          |
          |   35 |       if (odr_types_ptr)
          |      |          ^
          |      |          |
          |      |          (6) pointer 'odr_types_ptr' is checked for NULL here but it was already dereferenced at (5)
          |
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/99671
      	* analyzer.opt (Wanalyzer-deref-before-check): New warning.
      	* diagnostic-manager.cc
      	(null_assignment_sm_context::set_next_state): Only add state
      	change events for transition to "null" state.
      	(null_assignment_sm_context::is_transition_to_null): New.
      	* engine.cc (impl_region_model_context::on_pop_frame): New.
      	* exploded-graph.h (impl_region_model_context::on_pop_frame): New
      	decl.
      	* program-state.cc (sm_state_map::clear_any_state): New.
      	(sm_state_map::can_merge_with_p): New.
      	(program_state::can_merge_with_p): Replace requirement that
      	sm-states be equal in favor of an attempt to merge them.
      	* program-state.h (sm_state_map::clear_any_state): New decl.
      	(sm_state_map::can_merge_with_p): New decl.
      	* region-model.cc (region_model::eval_condition): Make const.
      	(region_model::pop_frame): Call ctxt->on_pop_frame.
      	* region-model.h (region_model::eval_condition): Make const.
      	(region_model_context::on_pop_frame): New vfunc.
      	(noop_region_model_context::on_pop_frame): New.
      	(region_model_context_decorator::on_pop_frame): New.
      	* sm-malloc.cc (enum resource_state): Add RS_ASSUMED_NON_NULL.
      	(allocation_state::dump_to_pp): Drop "final".
      	(struct assumed_non_null_state): New subclass.
      	(malloc_state_machine::m_assumed_non_null): New.
      	(assumed_non_null_p): New.
      	(class deref_before_check): New.
      	(assumed_non_null_state::dump_to_pp): New.
      	(malloc_state_machine::get_or_create_assumed_non_null_state_for_frame):
      	New.
      	(malloc_state_machine::maybe_assume_non_null): New.
      	(malloc_state_machine::on_stmt): Transition from start state to
      	"assumed-non-null" state for pointers passed to
      	__attribute__((nonnull)) arguments, and for pointers explicitly
      	dereferenced.  Call maybe_complain_about_deref_before_check for
      	pointers explicitly compared against NULL.
      	(malloc_state_machine::maybe_complain_about_deref_before_check):
      	New.
      	(malloc_state_machine::on_deallocator_call): Also transition
      	"assumed-non-null" states to "freed".
      	(malloc_state_machine::on_pop_frame): New.
      	(malloc_state_machine::maybe_get_merged_states_nonequal): New.
      	* sm-malloc.dot: Update for changes to sm-malloc.cc.
      	* sm.h (state_machine::on_pop_frame): New.
      	(state_machine::maybe_get_merged_state): New.
      	(state_machine::maybe_get_merged_states_nonequal): New.
      
      gcc/ChangeLog:
      	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
      	Add -Wanalyzer-deref-before-check.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/analyzer/deref-before-check-1.c: New test.
      	* gcc.dg/analyzer/deref-before-check-2.c: New test.
      	* gcc.dg/analyzer/deref-before-check-pr77425.c: New test.
      	* gcc.dg/analyzer/malloc-1.c (test_51): New test.
      
      gcc/ChangeLog:
      	PR analyzer/99671
      	* tristate.h (tristate::is_unknown): New.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      5c6546ca
    • Marek Polacek's avatar
      c++: Extend -Wdangling-reference for std::minmax · 7e3ce738
      Marek Polacek authored
      This patch extends -Wdangling-reference to also warn for
      
        auto v = std::minmax(1, 2);
      
      which dangles because this overload of std::minmax returns
      a std::pair<const int&, const int&> where the two references are
      bound to the temporaries created for the arguments of std::minmax.
      This is a common footgun, also described at
      <https://en.cppreference.com/w/cpp/algorithm/minmax> in Notes.
      
      It works by extending do_warn_dangling_reference to also warn when the
      function returns a std::pair<const T&, const T&>.  std_pair_ref_ref_p
      is a new helper to check that.
      
      gcc/cp/ChangeLog:
      
      	* call.cc (std_pair_ref_ref_p): New.
      	(do_warn_dangling_reference): Also warn when the function returns
      	std::pair<const T&, const T&>.  Recurse into TARGET_EXPR_INITIAL.
      	(maybe_warn_dangling_reference): Don't return early if we're
      	initializing a std_pair_ref_ref_p.
      
      gcc/ChangeLog:
      
      	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst:
      	Extend the description of -Wdangling-reference.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/warn/Wdangling-reference6.C: New test.
      7e3ce738
    • Martin Liska's avatar
      docs: move label directly before title · 740cf7d6
      Martin Liska authored
      Otherwise Sphinx can compare if Intersphinx is unavailable:
      
      gcc/fortran/doc/gfortran/intrinsic-procedures/atand.rst:50: WARNING: Failed to create a cross reference. A title or caption not found: 'atan'
      gcc/fortran/doc/gfortran/intrinsic-procedures/atan2.rst:55: WARNING: Failed to create a cross reference. A title or caption not found: 'atan'
      ...
      
      gcc/fortran/ChangeLog:
      
      	* doc/gfortran/intrinsic-procedures/abs.rst: Move label directly before title.
      	* doc/gfortran/intrinsic-procedures/acos.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/acosd.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/acosh.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/aimag.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/aint.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/anint.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/asin.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/asind.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/asinh.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/atan.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/atan2.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/atan2d.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/atand.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/atanh.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/besselj0.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/besselj1.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/besseljn.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/bessely0.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/bessely1.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/besselyn.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/btest.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/char.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/conjg.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/cos.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/cosd.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/cosh.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/cotan.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/cotand.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/dim.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/dprod.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/erf.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/erfc.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/exp.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/gamma.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/iand.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ibclr.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ibits.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ibset.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ichar.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ieor.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/index.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/int.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ior.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ishft.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/ishftc.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/len.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/lge.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/lgt.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/lle.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/llt.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/log.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/log10.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/loggamma.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/max.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/min.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/mod.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/mvbits.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/nint.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/not.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/real.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/sign.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/sin.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/sind.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/sinh.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/sqrt.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/tan.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/tand.rst: Likewise.
      	* doc/gfortran/intrinsic-procedures/tanh.rst: Likewise.
      740cf7d6
    • Andrew Pinski's avatar
      Remove SLOW_SHORT_ACCESS from target headers · e15d70e6
      Andrew Pinski authored
      SLOW_SHORT_ACCESS is defined in bfin and i386 target
      headers but the target macro is not used elsewhere.
      So let's remove it from those two headers and poison it.
      
      OK? Built x86_64-linux-gnu and bfin-elf.
      
      gcc/ChangeLog:
      
      	* config/bfin/bfin.h (SLOW_SHORT_ACCESS): Delete.
      	* config/i386/i386.h (SLOW_SHORT_ACCESS): Delete.
      	* system.h: Poison SLOW_SHORT_ACCESS
      e15d70e6
    • Aldy Hernandez's avatar
      Do not specify NAN sign in frange::set_nonnegative. · b4fc06d8
      Aldy Hernandez authored
      After further reading of the IEEE 754 standard, it has become clear
      that there are no guarantees with regards to the sign of a NAN when it
      comes to any operation other than copy, copysign, abs, and negate.
      
      Currently, set_nonnegative() is only used in one place in ranger
      applicable to floating point values, when expanding unknown calls.
      Since we already specially handle copy, copysign, abs, and negate, all
      the calls to set_nonnegative() must be NAN-sign agnostic.
      
      The cleanest solution is to leave the sign unspecificied in
      frange::set_nonnegative().  Any special case, must be handled by the
      caller.
      
      gcc/ChangeLog:
      
      	* value-range.cc (frange::set_nonnegative): Remove NAN sign handling.
      	(range_tests_signed_zeros): Adjust test.
      b4fc06d8
    • Richard Biener's avatar
      better PHI copy propagation for forwprop · f1b76811
      Richard Biener authored
      We can handle _1 = PHI <_1, _2> as a copy.
      
      	PR tree-optimization/84646
      	* tree-ssa-forwprop.cc (pass_forwprop::execute): Improve
      	copy propagation across PHIs.
      f1b76811
    • Philipp Tomsich's avatar
      RISC-V: Fix selection of pipeline model for sifive-7-series · 2f6cb9c5
      Philipp Tomsich authored
      A few of the gcc.target/riscv/mcpu-*.c tests have been failing for a
      while now, due to the pipeline model for sifive-7-series not being
      selected despite -mtune=sifive-7-series.  The root cause is that the
      respective RISCV_TUNE entry points to generic instead.  Fix this.
      
      Fixes 97d1ed67 ("RISC-V: Support --target-help for -mcpu/-mtune")
      
      gcc/ChangeLog:
      
      	* config/riscv/riscv-cores.def (RISCV_TUNE): Update
      	sifive-7-series to point to the sifive_7 pipeline description.
      2f6cb9c5
    • Richard Biener's avatar
      Restore CCP copy propagation · 203b127f
      Richard Biener authored
      The following restores copy propagation in CCP for the case the
      lattice was constant before trying to transition to a copy.  At
      some point we changed to use the meet operator to handle
      integer constant -> integer constant transitions but that screws
      up the const -> copy lattice transition.
      
      	PR tree-optimization/84646
      	* tree-ssa-ccp.cc (set_lattice_value): Make sure we
      	allow a const -> copy transition and avoid using meet
      	in that case.
      
      	* gcc.dg/tree-ssa/ssa-ccp-42.c: New testcase.
      203b127f
    • Martin Liska's avatar
      sphinx: add missing newline for conf.py files. · bd044dae
      Martin Liska authored
      gcc/d/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      
      gcc/ChangeLog:
      
      	* doc/cpp/conf.py: Add newline at last line.
      	* doc/cppinternals/conf.py: Add newline at last line.
      	* doc/gcc/conf.py: Add newline at last line.
      	* doc/gccint/conf.py: Add newline at last line.
      	* doc/install/conf.py: Add newline at last line.
      
      gcc/fortran/ChangeLog:
      
      	* doc/gfc-internals/conf.py: Add newline at last line.
      	* doc/gfortran/conf.py: Add newline at last line.
      
      gcc/go/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      
      libgomp/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      
      libiberty/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      
      libitm/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      
      libquadmath/ChangeLog:
      
      	* doc/conf.py: Add newline at last line.
      bd044dae
    • Richard Biener's avatar
      unswitching of outer loops · 9e11ceef
      Richard Biener authored
      This allows loop unswitching to unswitch outer loops conditions are
      invariant in.  We restrict ourselves to unswitch conditions in innermost
      loops and will only unswitch loop nests that do not contain any sibling loops.
      To simplify the implementation the loop nest unswitched is the deepest all
      unswitching candidates are invariant in.
      
      For 507.cactuBSSN_r it can be observed we unswitch the outer loops
      of the compute kernels for the fdOrder parameter.  It seems to be within
      the existing growth limitations to perform the unswitchings, a performance
      benefit is not seen.
      
      	* tree-ssa-loop-unswitch.cc (init_loop_unswitch_info): First collect
      	candidates and determine the outermost loop to unswitch.
      	(tree_ssa_unswitch_loops): First perform all guard hoisting,
      	then perform unswitching on innermost loop predicates.
      	(find_unswitching_predicates_for_bb): Keep track of the
      	outermost loop to unswitch.
      	(evaluate_bbs): Adjust exit test.
      	(tree_unswitch_single_loop): Dump whether we unswitched an outer
      	loop.
      	(tree_unswitch_loop): Remove assert we unswitch only innermost
      	loops.
      
      	* gcc.dg/loop-unswitch-18.c: New testcase.
      	* gcc.dg/tree-ssa/loopclosedphi.c: Disable unswitching,
      	adjust expected counts.
      	* gcc.dg/torture/pr71462.c: Add -w to ignore undefined
      	behavior diagnostics after now unswitching outer loops.
      9e11ceef
    • Jakub Jelinek's avatar
      i386: Fix up ix86_expand_int_sse_cmp [PR107585] · 49de156a
      Jakub Jelinek authored
      The following patch fixes ICE on the testcase.  I've used GEN_INT
      incorrectly thinking the code punts on the problematic boundaries.
      It does, but only for LE and GE, i.e. signed comparisons, for unsigned
      the boundaries are 0 and unsigned maximum, so when say unsigned char
      adds one to 127 or subtracts one from 128 we need to canonicalize it.
      
      2022-11-10  Jakub Jelinek  <jakub@redhat.com>
      
      	PR target/107585
      	PR target/107546
      	* config/i386/i386-expand.cc (ix86_expand_int_sse_cmp): Use
      	gen_int_mode rather than GEN_INT.
      
      	* gcc.dg/pr107585.c: New test.
      49de156a
    • Martin Liska's avatar
      maintainer-scripts: fix superfluous 'sh' for Python script · 9072763f
      Martin Liska authored
      maintainer-scripts/ChangeLog:
      
      	* crontab: Fix superfluous 'sh' for Python script.
      9072763f
    • Martin Liska's avatar
      doc: Modernize baseconf.py. · dd31c692
      Martin Liska authored
      ChangeLog:
      
      	* doc/baseconf.py: Modernize by using pathlib.
      dd31c692
    • Arsen Arsenović's avatar
      doc: Use a separate directory for new modules we add to PATH · 70f1c410
      Arsen Arsenović authored
      ChangeLog:
      
      	* doc/baseconf.py: Inject dirname(__file__)/'modules' to path
      	instead of just ``.''.
      	* doc/gcc_sphinx.py: Moved to...
      	* doc/modules/gcc_sphinx.py: ...here.
      70f1c410
    • Jonathan Wakely's avatar
      libstdc++: Optimize std::destructible concept · 0cbb756f
      Jonathan Wakely authored
      This uses variable templates and constraints to define a much simpler
      std::destructible concept. This avoids instantiating the trait
      std::is_nothrow_destructible and all its implementation in terms of
      __is_destructible_safe and __is_destructible_impl.
      
      If we had an intrinsic we could just use that (PR c++/107600).
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/concepts (__detail::__destructible_impl)
      	(__detail::__destructible): New variable templates.
      	(destructible): Use __detail::__destructible.
      	* testsuite/std/concepts/concepts.lang/concept.destructible/1.cc:
      	Add more checks for array and reference types.
      0cbb756f
    • GCC Administrator's avatar
      Daily bump. · 1cdfd0e5
      GCC Administrator authored
      1cdfd0e5
    • Ian Lance Taylor's avatar
      go: don't crash if __atomic_fetch_add functions are used · 219f8207
      Ian Lance Taylor authored
      The Go frontend only generates __atomic_add_fetch, but in some cases
      thost calls become __atomic_fetch_add.
      
      Patch originally by Marc Poulhiès.
      
      	PR target/107581
      	* go-gcc.cc (Gcc_backend::Gcc_backend): Define
      	__atomic_fetch_add_{4,8}.
      219f8207
  3. Nov 09, 2022
    • David Malcolm's avatar
      analyzer: better logging of event creation · 965ce1ba
      David Malcolm authored
      
      gcc/analyzer/ChangeLog:
      	* checker-path.cc (checker_event::debug): New.
      	(checker_path::add_event): Move here from checker-path.h.  Add
      	logging.
      	* checker-path.h (checker_event::debug): New decl.
      	(checker_path::checker_path): Add logger param.
      	(checker_path::add_event): Move definition from here to
      	checker-path.cc.
      	(checker_path::m_logger): New field.
      	* diagnostic-manager.cc
      	(diagnostic_manager::emit_saved_diagnostic): Pass logger to
      	checker_path ctor.
      	(diagnostic_manager::add_events_for_eedge): Log scope when
      	processing a run of stmts.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      965ce1ba
    • Martin Liska's avatar
      docs: Add missing variable name in example · d8c10581
      Martin Liska authored
      
      gcc/ChangeLog:
      
      	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
      	Add missing variable name.
      
      Co-Authored-By: default avatarSinan <sinan.lin@linux.alibaba.com>
      d8c10581
    • Harald Anlauf's avatar
      Fortran: avoid NULL pointer dereference on bad EQUIVALENCEs [PR107559] · e505f749
      Harald Anlauf authored
      gcc/fortran/ChangeLog:
      
      	PR fortran/107559
      	* resolve.cc (resolve_equivalence): Avoid NULL pointer dereference
      	while emitting diagnostics for bad EQUIVALENCEs.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/107559
      	* gfortran.dg/pr107559.f90: New test.
      e505f749
    • Martin Liska's avatar
      docs: Fix expected diagnostics URL [PR107599] · f94c2eff
      Martin Liska authored
      	PR c++/107599
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/diagnostic-format-json-2.c: Fix expected URL.
      	* c-c++-common/diagnostic-format-json-3.c: Likewise.
      	* c-c++-common/diagnostic-format-json-4.c: Likewise.
      	* gfortran.dg/diagnostic-format-json-2.F90: Likewise.
      	* gfortran.dg/diagnostic-format-json-3.F90: Likewise.
      f94c2eff
    • Harald Anlauf's avatar
      Fortran: ordering of hidden procedure arguments [PR107441] · e805adaa
      Harald Anlauf authored
      The gfortran ABI specifies the order of given and hidden procedure arguments,
      where the hidden presence status flags of optional+value scalar arguments
      shall come before character length, coarray token and offset.  Respect that.
      
      gcc/fortran/ChangeLog:
      
      	PR fortran/107441
      	* trans-decl.cc (create_function_arglist): Adjust the ordering of
      	automatically generated hidden procedure arguments to match the
      	documented ABI for gfortran.
      	* trans-types.cc (gfc_get_function_type): Separate hidden parameters
      	so that the presence flag for optional+value arguments come before
      	string length, coarray token and offset, as required.
      
      gcc/testsuite/ChangeLog:
      
      	PR fortran/107441
      	* gfortran.dg/coarray/pr107441-caf.f90: New test.
      	* gfortran.dg/optional_absent_6.f90: New test.
      	* gfortran.dg/optional_absent_7.f90: New test.
      e805adaa
    • Martin Liska's avatar
      sphinx: add missing HAS_SPHINX_BUILD · 8f5aa130
      Martin Liska authored
      libgomp/ChangeLog:
      
      	* Makefile.in: Add missing HAS_SPHINX_BUILD.
      
      libitm/ChangeLog:
      
      	* Makefile.in: Add missing HAS_SPHINX_BUILD.
      
      libquadmath/ChangeLog:
      
      	* Makefile.in: Add missing HAS_SPHINX_BUILD.
      8f5aa130
    • Martin Liska's avatar
      docs: create sources tarball · 52eedc1f
      Martin Liska authored
      maintainer-scripts/ChangeLog:
      
      	* update_web_docs_git.py: Create sources tarball.
      52eedc1f
    • Aldy Hernandez's avatar
      Clear NAN when reading back a global range if necessary. · 4eadbe80
      Aldy Hernandez authored
      When reading back from the global store, we must clear the NAN bit if
      necessary.  The reason it's not happening is because the constructor
      sets a NAN by default (when HONOR_NANS).  We must be careful to clear
      the NAN bit if the original range didn't have a NAN.
      
      I have commented the reason we use the constructor instead of filling
      out the fields by hand, because it wasn't clear at re-reading this
      code.
      
      	PR 107569/tree-optimization
      
      gcc/ChangeLog:
      
      	* value-range-storage.cc (frange_storage_slot::get_frange): Clear
      	NAN if appropriate.
      	* value-range.cc (range_tests_floats): New test.
      4eadbe80
    • Aldy Hernandez's avatar
      Revert op[12]_range operators for PLUS_EXPR and MINUS_EXPR. · 8bb3f172
      Aldy Hernandez authored
      Revert the patch below until issues are resolved:
      
      	commit 4287e816
      	Author: Aldy Hernandez <aldyh@redhat.com>
      	Date:   Wed Nov 9 01:00:57 2022 +0100
      
      	    Implement op[12]_range operators for PLUS_EXPR and MINUS_EXPR.
      
      	    We can implement the op[12]_range entries for plus and minus in terms
      	    of each other.  These are adapted from the integer versions.
      
      gcc/ChangeLog:
      
      	* range-op-float.cc (class foperator_plus): Remove op[12]_range.
      	(class foperator_minus): Same.
      8bb3f172
    • Qing Zhao's avatar
      Change the name of array_at_struct_end_p to array_ref_flexible_size_p · ace0ae09
      Qing Zhao authored
      The name of the utility routine "array_at_struct_end_p" is misleading
      and should be changed to a new name that more accurately reflects its
      real meaning.
      
      The routine "array_at_struct_end_p" is used to check whether an array
      reference is to an array whose actual size might be larger than its
      upper bound implies, which includes 3 different cases:
      
         A. a ref to a flexible array member at the end of a structure;
         B. a ref to an array with a different type against the original decl;
         C. a ref to an array that was passed as a parameter;
      
      The old name only reflects the above case A, therefore very confusing
      when reading the corresponding gcc source code.
      
      In this patch, A new name "array_ref_flexible_size_p" is used to replace
      the old name.
      
      All the references to the routine "array_at_struct_end_p" was replaced
      with this new name, and the corresponding comments were updated to make
      them clean and consistent.
      
      gcc/ChangeLog:
      
      	* gimple-array-bounds.cc (trailing_array): Replace
      	array_at_struct_end_p with new name and update comments.
      	* gimple-fold.cc (get_range_strlen_tree): Likewise.
      	* gimple-ssa-warn-restrict.cc (builtin_memref::builtin_memref):
      	Likewise.
      	* graphite-sese-to-poly.cc (bounds_are_valid): Likewise.
      	* tree-if-conv.cc (idx_within_array_bound): Likewise.
      	* tree-object-size.cc (addr_object_size): Likewise.
      	* tree-ssa-alias.cc (component_ref_to_zero_sized_trailing_array_p):
      	Likewise.
      	(stmt_kills_ref_p): Likewise.
      	* tree-ssa-loop-niter.cc (idx_infer_loop_bounds): Likewise.
      	* tree-ssa-strlen.cc (maybe_set_strlen_range): Likewise.
      	* tree.cc (array_at_struct_end_p): Rename to ...
      	(array_ref_flexible_size_p): ... this.
      	(component_ref_size): Replace array_at_struct_end_p with new name.
      	* tree.h (array_at_struct_end_p): Rename to ...
      	(array_ref_flexible_size_p): ... this.
      ace0ae09
    • Martin Liska's avatar
      docs: fix links pointing to gcc.gnu.org/install · 0b3d926d
      Martin Liska authored
      Use https://gcc.gnu.org/onlinedocs/install/ instead.
      
      ChangeLog:
      
      	* configure.ac: Use new install URL.
      	* configure: Regenerate.
      
      gcc/ChangeLog:
      
      	* Makefile.in: Use new install URL.
      	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst:
      	Use intersphinx link.
      	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
      	Use new URL.
      	* doc/gccint/source-tree-structure-and-build-system.rst: Use
      	intersphinx link.
      	* doc/install/host-target-specific-installation-notes-for-gcc.rst: Likewise.
      	* doc/install/installing-gcc.rst: Likewise.
      0b3d926d
Loading