• R/O
  • HTTP
  • SSH
  • HTTPS

Listed des commits

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

RSS
Révision l'heure Auteur
02698e2 2022-11-11 21:37:14 Martin Liska

doc: update sphinx-build -j auto comment

ChangeLog:

* doc/Makefile: Update comment.

08fd14f 2022-11-11 21:32:01 Martin Liska

sphinx: stop using parallel mode

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.

999c14c 2022-11-11 17:52:22 Martin Liska

changelog: check for space after tab

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.

5576518 2022-11-11 17:16:13 Ju-Zhe Zhong

RISC-V: Add RVV registers register spilling

This patch support RVV scalable register spilling.
prologue && epilogue handling pick up prototype from Monk Chiang <monk.chiang@sifive.com>.
Co-authored-by: Monk 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.

fbad7a7 2022-11-11 13:00:58 Jonathan Wakely

libstdc++: Fix tests with non-const operator==

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.

f54ae4d 2022-11-11 13:00:58 Jonathan Wakely

libstdc++: Add missing definition for <charconv> in C++14 mode

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.

56d2222 2022-11-11 13:00:58 Jonathan Wakely

libstdc++: Fix test that uses C++17 variable template in C++14

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.

b3ac43a 2022-11-11 13:00:58 Jonathan Wakely

libstdc++: Avoid redundant checks in std::use_facet [PR103755]

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.

d3fe767 2022-11-11 13:00:58 Jonathan Wakely

c-family: Support #pragma region/endregion [PR85487]

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.

21de01f 2022-11-11 10:57:01 Haochen Jiang

i386: Add ISA check for newly introduced prefetch builtins.

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.

f225b81 2022-11-11 09:17:22 GCC Administrator

Daily bump.

5c6546c 2022-11-11 03:23:56 David Malcolm

analyzer: new warning: -Wanalyzer-deref-before-check [PR99671]

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: David Malcolm <dmalcolm@redhat.com>

7e3ce73 2022-11-11 03:17:09 Marek Polacek

c++: Extend -Wdangling-reference for std::minmax

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.

740cf7d 2022-11-11 02:02:48 Martin Liska

docs: move label directly before title

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.

e15d70e 2022-11-11 01:25:33 Andrew Pinski

Remove SLOW_SHORT_ACCESS from target headers

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

b4fc06d 2022-11-11 00:41:25 Aldy Hernandez

Do not specify NAN sign in frange::set_nonnegative.

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.

f1b7681 2022-11-10 23:19:43 Richard Biener

better PHI copy propagation for forwprop

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.

2f6cb9c 2022-11-10 22:57:02 Philipp Tomsich

RISC-V: Fix selection of pipeline model for sifive-7-series

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 97d1ed67fc6 ("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.

203b127 2022-11-10 22:11:11 Richard Biener

Restore CCP copy propagation

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.

bd044da 2022-11-10 21:56:49 Martin Liska

sphinx: add missing newline for conf.py files.

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.

9e11cee 2022-11-10 19:53:13 Richard Biener

unswitching of outer loops

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.

49de156 2022-11-10 19:46:52 Jakub Jelinek

i386: Fix up ix86_expand_int_sse_cmp [PR107585]

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.

9072763 2022-11-10 14:37:32 Martin Liska

maintainer-scripts: fix superfluous 'sh' for Python script

maintainer-scripts/ChangeLog:

* crontab: Fix superfluous 'sh' for Python script.

dd31c69 2022-11-10 14:32:38 Martin Liska

doc: Modernize baseconf.py.

ChangeLog:

* doc/baseconf.py: Modernize by using pathlib.

70f1c41 2022-11-10 14:26:27 Arsen Arsenović

doc: Use a separate directory for new modules we add to PATH

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.

0cbb756 2022-11-10 10:59:34 Jonathan Wakely

libstdc++: Optimize std::destructible concept

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.

1cdfd0e 2022-11-10 09:17:57 GCC Administrator

Daily bump.

219f820 2022-11-10 09:06:10 Ian Lance Taylor

go: don't crash if __atomic_fetch_add functions are used

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}.

965ce1b 2022-11-10 07:20:06 David Malcolm

analyzer: better logging of event creation

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: David Malcolm <dmalcolm@redhat.com>

d8c1058 2022-11-10 05:57:08 Martin Liska

docs: Add missing variable name in example

gcc/ChangeLog:

* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
Add missing variable name.

Co-Authored-By: Sinan <sinan.lin@linux.alibaba.com>