- Nov 11, 2022
-
-
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.
-
Martin Liska authored
ChangeLog: * doc/Makefile: Update comment.
-
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.
-
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.
-
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:
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
GCC Administrator authored
-
- Nov 10, 2022
-
-
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:
David Malcolm <dmalcolm@redhat.com>
-
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.
-
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.
-
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
Martin Liska authored
maintainer-scripts/ChangeLog: * crontab: Fix superfluous 'sh' for Python script.
-
Martin Liska authored
ChangeLog: * doc/baseconf.py: Modernize by using pathlib.
-
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.
-
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.
-
GCC Administrator authored
-
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}.
-
- Nov 09, 2022
-
-
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:
David Malcolm <dmalcolm@redhat.com>
-
Martin Liska authored
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>
-
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.
-
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.
-
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.
-
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.
-
Martin Liska authored
maintainer-scripts/ChangeLog: * update_web_docs_git.py: Create sources tarball.
-
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.
-
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.
-
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.
-
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.
-