Commit graph

208739 commits

Author SHA1 Message Date
Patrick Palka
65b4cba9d6 libstdc++: Implement P2165R4 changes to std::pair/tuple/etc [PR113309]
This implements the C++23 paper P2165R4 Compatibility between tuple,
pair and tuple-like objects, which builds upon many changes from the
earlier C++23 paper P2321R2 zip.

Some declarations had to be moved around so that they're visible from
<bits/stl_pair.h> without introducing new includes and bloating the
header.  In the end, the only new include is for <bits/utility.h> from
<bits/stl_iterator.h>, for tuple_element_t.

	PR libstdc++/113309
	PR libstdc++/109203

libstdc++-v3/ChangeLog:

	* include/bits/ranges_util.h (__detail::__pair_like): Don't
	define in C++23 mode.
	(__detail::__pair_like_convertible_from): Adjust as per P2165R4.
	(__detail::__is_subrange<subrange>): Moved from <ranges>.
	(__detail::__is_tuple_like_v<subrange>): Likewise.
	* include/bits/stl_iterator.h: Include <bits/utility.h> for
	C++23.
	(__different_from): Move to <concepts>.
	(__iter_key_t): Adjust for C++23 as per P2165R4.
	(__iter_val_t): Likewise.
	* include/bits/stl_pair.h (pair, array): Forward declare.
	(get): Forward declare all overloads relevant to P2165R4
	tuple-like constructors.
	(__is_tuple_v): Define for C++23.
	(__is_tuple_like_v): Define for C++23.
	(__tuple_like): Define for C++23 as per P2165R4.
	(__pair_like): Define for C++23 as per P2165R4.
	(__eligibile_tuple_like): Define for C++23.
	(__eligibile_pair_like): Define for C++23.
	(pair::_S_constructible_from_pair_like): Define for C++23.
	(pair::_S_convertible_from_pair_like): Define for C++23.
	(pair::_S_dangles_from_pair_like): Define for C++23.
	(pair::pair): Define overloads taking a tuple-like type for
	C++23 as per P2165R4.
	(pair::_S_assignable_from_tuple_like): Define for C++23.
	(pair::_S_const_assignable_from_tuple_like): Define for C++23.
	(pair::operator=): Define overloads taking a tuple-like type for
	C++23 as per P2165R4.
	* include/bits/utility.h (ranges::__detail::__is_subrange):
	Moved from <ranges>.
	* include/bits/version.def (tuple_like): Define for C++23.
	* include/bits/version.h: Regenerate.
	* include/std/concepts (__different_from): Moved from
	<bits/stl_iterator.h>.
	(ranges::__swap::__adl_swap): Clarify which __detail namespace.
	* include/std/map (__cpp_lib_tuple_like): Define C++23.
	* include/std/ranges (__detail::__is_subrange): Moved to
	<bits/utility.h>.
	(__detail::__is_subrange<subrange>): Moved to <bits/ranges_util.h>
	(__detail::__has_tuple_element): Adjust for C++23 as per P2165R4.
	(__detail::__tuple_or_pair): Remove as per P2165R4.  Replace all
	uses with plain tuple as per P2165R4.
	* include/std/tuple (__cpp_lib_tuple_like): Define for C++23.
	(__tuple_like_tag_t): Define for C++23.
	(__tuple_cmp): Forward declare for C++23.
	(_Tuple_impl::_Tuple_impl): Define overloads taking
	__tuple_like_tag_t and a tuple-like type for C++23.
	(_Tuple_impl::_M_assign): Likewise.
	(tuple::__constructible_from_tuple_like): Define for C++23.
	(tuple::__convertible_from_tuple_like): Define for C++23.
	(tuple::__dangles_from_tuple_like): Define for C++23.
	(tuple::tuple): Define overloads taking a tuple-like type for
	C++23 as per P2165R4.
	(tuple::__assignable_from_tuple_like): Define for C++23.
	(tuple::__const_assignable_from_tuple_like): Define for C++23.
	(tuple::operator=): Define overloads taking a tuple-like type
	for C++23 as per P2165R4.
	(tuple::__tuple_like_common_comparison_category): Define for C++23.
	(tuple::operator<=>): Define overload taking a tuple-like type
	for C++23 as per P2165R4.
	(array, get): Forward declarations moved to <bits/stl_pair.h>.
	(tuple_cat): Constrain with __tuple_like for C++23 as per P2165R4.
	(apply): Likewise.
	(make_from_tuple): Likewise.
	(__tuple_like_common_reference): Define for C++23.
	(basic_common_reference): Adjust as per P2165R4.
	(__tuple_like_common_type): Define for C++23.
	(common_type): Adjust as per P2165R4.
	* include/std/unordered_map (__cpp_lib_tuple_like): Define for
	C++23.
	* include/std/utility (__cpp_lib_tuple_like): Define for C++23.
	* testsuite/std/ranges/zip/1.cc (test01): Adjust to handle pair
	and 2-tuple interchangeably.
	(test05): New test.
	* testsuite/20_util/pair/p2165r4.cc: New test.
	* testsuite/20_util/tuple/p2165r4.cc: New test.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
2024-02-01 14:59:46 -05:00
Patrick Palka
87d162383e libstdc++/pair: Factor out const-assignability helper for C++20
This is consistent with std::tuple's __const_assignable helper, and will
be useful for implementing the new pair::operator= overloads from P2165R4.

libstdc++-v3/ChangeLog:

	* include/bits/stl_pair.h (pair::_S_const_assignable): Define,
	factored out from ...
	(pair::operator=): ... the constraints of the const overloads.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
2024-02-01 14:56:02 -05:00
John David Anglin
b14209715e Set num_threads to 50 on 32-bit hppa in two libgomp loop tests
We support a maximum of 50 threads on 32-bit hppa.

2024-02-01  John David Anglin  <danglin@gcc.gnu.org>

libgomp/ChangeLog:

	* testsuite/libgomp.c++/loop-3.C: Set num_threads to 50
	on 32-bit hppa.
	* testsuite/libgomp.c/omp-loop03.c: Likewise.
2024-02-01 19:09:53 +00:00
John David Anglin
d71c7f107a xfail gnat.dg/trampoline3.adb scan-assembler-not check on hppa*-*-*
We still require an executable stack for trampolines on hppa*-*-*.

2024-02-01  John David Anglin  <danglin@gcc.gnu.org>

gcc/testsuite/ChangeLog:

	* gnat.dg/trampoline3.adb: xfail scan-assembler-not
	check on hppa*-*-*.
2024-02-01 18:57:15 +00:00
John David Anglin
f26094751e hppa: Fix bug in atomic_storedi_1 pattern
The first alternative stores the floating-point status register
in the destination.  It should store zero.  We need to copy %fr0
to another floating-point register to initialize it to zero.

2024-02-01  John David Anglin  <danglin@gcc.gnu.org>

gcc/ChangeLog:

	* config/pa/pa.md (atomic_storedi_1): Fix bug in
	alternative 1.
2024-02-01 18:48:34 +00:00
Patrick Palka
3ba5be16a2 c++: ttp TEMPLATE_DECL equivalence [PR112737]
Here during declaration matching we undesirably consider the two TT{42}
CTAD expressions to be non-equivalent ultimately because for CTAD
placeholder equivalence we compare the TEMPLATE_DECLs via pointer identity,
and here the corresponding TEMPLATE_DECLs for TT are different since
they're from different scopes.  On the other hand, the corresponding
TEMPLATE_TEMPLATE_PARMs are deemed equivalent according to cp_tree_equal
(since they have the same position and template parameters).  This turns
out to be the root cause of some of the xtreme-header modules regressions.

So this patch relaxes ttp CTAD placeholder equivalence accordingly, by
comparing the TEMPLATE_TEMPLATE_PARM instead of the TEMPLATE_DECL.  It
turns out this issue also affects function template-id equivalence as
with g<TT> in the second testcase, so it makes sense to relax TEMPLATE_DECL
equivalence more generally in cp_tree_equal.  In passing this patch
improves ctp_hasher::hash for CTAD placeholders, so that they don't
all get the same hash.

	PR c++/112737

gcc/cp/ChangeLog:

	* pt.cc (iterative_hash_template_arg) <case TEMPLATE_DECL>:
	Adjust hashing to match cp_tree_equal.
	(ctp_hasher::hash): Also hash CLASS_PLACEHOLDER_TEMPLATE.
	* tree.cc (cp_tree_equal) <case TEMPLATE_DECL>: Return true
	for ttp TEMPLATE_DECLs if their TEMPLATE_TEMPLATE_PARMs are
	equivalent.
	* typeck.cc (structural_comptypes) <case TEMPLATE_TYPE_PARM>:
	Use cp_tree_equal to compare CLASS_PLACEHOLDER_TEMPLATE.

gcc/testsuite/ChangeLog:

	* g++.dg/template/ttp42.C: New test.
	* g++.dg/template/ttp43.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
2024-02-01 13:17:48 -05:00
Georg-Johann Lay
a886a90625 AVR: Tabify avr.cc
gcc/
	* config/avr/avr.cc: Tabify.
2024-02-01 18:57:50 +01:00
Richard Ball
4571b4d413 middle-end: Fix ICE in poly-int.h due to SLP.
Adds a check to ensure that the input vector arguments
to a function are not variable length. Previously, only the
output vector of a function was checked.

The ICE in question is within the neon-sve-bridge.c test,
and is related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111268

gcc/ChangeLog:
	PR tree-optimization/111268
	* tree-vect-slp.cc (vectorizable_slp_permutation_1):
	Add variable-length check for vector input arguments
	to a function.
2024-02-01 17:18:28 +00:00
Jonathan Wakely
314cbfe298 libstdc++: Do not use def-file-line for each macro in <bits/version.h>
These line markers are not needed, because searching <bits/version.def>
for a macro name works fine. Removing them means that small changes to
<bits/version.def> do not result in large diffs to <bits/version.h>
because of all the changed line numbers.

libstdc++-v3/ChangeLog:

	* include/bits/version.tpl: Do not use def-file-line for each
	macro being defined.
	* include/bits/version.h: Regenerate.
2024-02-01 15:26:54 +00:00
Jonathan Wakely
52e9b70830 libstdc++: Update expected error for debug/constexpr*_neg.cc tests
We no longer hit a __builtin_unreachable() in these tests, so we need to
update the dg-error patterns to match _Error_formatter::_M_error().

We can also remove some dg-prune-output directives matching notes saying
"in 'constexpr' expansion" because that's done globally in prune.exp.

libstdc++-v3/ChangeLog:

	* testsuite/25_algorithms/copy/debug/constexpr_neg.cc: Adjust
	dg-error pattern.
	* testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc:
	Likewise.
	* testsuite/25_algorithms/equal/debug/constexpr_neg.cc:
	Likewise.
	* testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc:
	Likewise.
	* testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc:
	Likewise.
	* testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc:
	Likewise.
	* testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc:
	Likewise.
	* testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc:
	Likewise.
	* testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc:
	Likewise.
2024-02-01 15:26:53 +00:00
Jonathan Wakely
e81a697577 libstdc++: Fix -Wdeprecated warning about implicit capture of 'this'
In C++20 it's deprecated for a [=] lambda capture to capture the 'this'
pointer. Using resize_and_overwrite with a lambda seems like overkill to
write three chars to the string anyway. Just resize the string and
overwrite the end of it directly.

libstdc++-v3/ChangeLog:

	* include/experimental/internet (network_v4::to_string()):
	Remove lambda and use of resize_and_overwrite.
2024-02-01 15:26:53 +00:00
Thomas Schwinge
a5eb246e04 GCN: Don't hard-code number of SGPR/VGPR/AVGPR registers
Also add 'STATIC_ASSERT's for number of SGPR/VGPR/AVGPR registers (in
'#ifndef USED_FOR_TARGET', as otherwise 'STATIC_ASSERT' isn't available).

	gcc/
	* config/gcn/gcn.cc (gcn_hsa_declare_function_name): Don't
	hard-code number of SGPR/VGPR/AVGPR registers.
	* config/gcn/gcn.h: Add a 'STATIC_ASSERT's for number of
	SGPR/VGPR/AVGPR registers.
2024-02-01 16:13:28 +01:00
Lewis Hyatt
019dc63819 libcpp: Stabilize the location for macros restored after PCH load [PR105608]
libcpp currently lacks the infrastructure to assign correct locations to
macros that were defined prior to loading a PCH and then restored
afterwards. While I plan to address that fully for GCC 15, this patch
improves things by using at least a valid location, even if it's not the
best one. Without this change, libcpp uses pfile->directive_line as the
location for the restored macros, but this location_t applies to the old
line map, not the one that was just restored from the PCH, so the resulting
location is unpredictable and depends on what was stored in the line maps
before. With this change, all restored macros get assigned locations at the
line of the #include that triggered the PCH restore. A future patch will
store the actual file name and line number of each definition and then
synthesize locations in the new line map pointing to the right place.

gcc/c-family/ChangeLog:

	PR preprocessor/105608
	* c-pch.cc (c_common_read_pch): Adjust line map so that libcpp
	assigns a location to restored macros which is the same location
	that triggered the PCH include.

libcpp/ChangeLog:

	PR preprocessor/105608
	* pch.cc (cpp_read_state): Set a valid location for restored
	macros.
2024-02-01 09:07:17 -05:00
Marek Polacek
65b105b4f3 c++: ICE with throw inside concept [PR112437]
We crash in the loop at the end of treat_lvalue_as_rvalue_p for code
like

  template <class T>
  concept Throwable = requires(T x) { throw x; };

because the code assumes that we eventually reach sk_function_parms or
sk_try and bail, but in a concept we're in a sk_namespace.

We're already checking sk_try so we don't crash in a function-try-block,
but I've added a test anyway.

	PR c++/112437

gcc/cp/ChangeLog:

	* typeck.cc (treat_lvalue_as_rvalue_p): Bail out on sk_namespace in
	the move on throw of parms loop.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/concepts-throw1.C: New test.
	* g++.dg/eh/throw4.C: New test.
2024-02-01 09:00:29 -05:00
Monk Chiang
ec217f7282 RISC-V: Support scheduling for sifive p600 series
Add sifive p600 series scheduler module. For more information
see https://www.sifive.com/cores/performance-p650-670.
Add sifive-p650, sifive-p670 for mcpu option will come in separate patches.

gcc/ChangeLog:

	* config/riscv/riscv.md: Add "fcvt_i2f", "fcvt_f2i" type
	attribute, and include sifive-p600.md.
	* config/riscv/generic-ooo.md: Update type attribute.
	* config/riscv/generic.md: Update type attribute.
	* config/riscv/sifive-7.md: Update type attribute.
	* config/riscv/sifive-p600.md: New file.
	* config/riscv/riscv-cores.def (RISCV_TUNE): Add parameter.
	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type):
	Add sifive_p600.
	* config/riscv/riscv.cc (sifive_p600_tune_info): New.
	* config/riscv/riscv.h (TARGET_SFB_ALU): Update.
	* doc/invoke.texi (RISC-V Options): Add sifive-p600-series
2024-02-01 20:39:41 +08:00
Monk Chiang
5c18df44fd RISC-V: Add minimal support for 7 new unprivileged extensions
The RISC-V Profiles specification here:
https://github.com/riscv/riscv-profiles/blob/main/profiles.adoc#7-new-isa-extensions

These extensions don't add any new features but
describe existing features. So this patch only adds parsing.

Za64rs: Reservation set size of 64 bytes
Za128rs: Reservation set size of 128 bytes
Ziccif: Main memory supports instruction fetch with atomicity requirement
Ziccrse: Main memory supports forward progress on LR/SC sequences
Ziccamoa: Main memory supports all atomics in A
Zicclsm: Main memory supports misaligned loads/stores
Zic64b: Cache block size isf 64 bytes

gcc/ChangeLog:

	* common/config/riscv/riscv-common.cc: Add Za64rs, Za128rs,
	Ziccif, Ziccrse, Ziccamoa, Zicclsm, Zic64b items.
	* config/riscv/riscv.opt: New macro for 7 new unprivileged
	extensions.
	* doc/invoke.texi (RISC-V Options): Add Za64rs, Za128rs,
	Ziccif, Ziccrse, Ziccamoa, Zicclsm, Zic64b extensions.
gcc/testsuite/ChangeLog:

	* gcc.target/riscv/za-ext.c: New test.
	* gcc.target/riscv/zi-ext.c: New test.
2024-02-01 20:38:15 +08:00
Rainer Orth
099d53e5b5 Link shared libasan with -z now on Solaris
g++.dg/asan/default-options-1.C FAILs on Solaris/SPARC and x86:

FAIL: g++.dg/asan/default-options-1.C   -O0  execution test
FAIL: g++.dg/asan/default-options-1.C   -O1  execution test
FAIL: g++.dg/asan/default-options-1.C   -O2  execution test
FAIL: g++.dg/asan/default-options-1.C   -O2 -flto  execution test
FAIL: g++.dg/asan/default-options-1.C   -O2 -flto -flto-partition=none  execution test
FAIL: g++.dg/asan/default-options-1.C   -O3 -g  execution test
FAIL: g++.dg/asan/default-options-1.C   -Os  execution test

The failure is always the same:

AddressSanitizer: CHECK failed: asan_rtl.cpp:397 "((!AsanInitIsRunning() && "ASan init calls itself!")) != (0)" (0x0, 0x0) (tid=1)

This happens because libasan makes unportable assumptions about
initialization order that don't hold on Solaris.  The problem has
already been fixed in clang by

	[Driver] Link shared asan runtime lib with -z now on Solaris/x86
	https://reviews.llvm.org/D156325

where it was way more prevalent.

This patch applies the same fix to gcc.

Tested on i386-pc-solaris2.11 (ld and gld) and sparc-sun-solaris2.11.

2024-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc:
	* config/sol2.h (LIBASAN_EARLY_SPEC): Add -z now unless
	-static-libasan.  Add missing whitespace.
2024-02-01 13:13:06 +01:00
Rainer Orth
5b9b395b85 testsuite: i386: Fix gcc.target/i386/pr38534-1.c etc. on Solaris/x86
The gcc.target/i386/pr38534-1.c etc. tests FAIL on 32 and 64-bit
Solaris/x86:

FAIL: gcc.target/i386/pr38534-1.c scan-assembler-not push
FAIL: gcc.target/i386/pr38534-2.c scan-assembler-not push
FAIL: gcc.target/i386/pr38534-3.c scan-assembler-not push
FAIL: gcc.target/i386/pr38534-4.c scan-assembler-not push

The tests assume the Linux/x86 default of -fomit-frame-pointer, while
Solaris/x86 defaults to -fno-omit-frame-pointer.

Fixed by specifying -fomit-frame-pointer explicitly.

Tested on i386-pc-solaris2.11 and i686-pc-linux-gnu.

2024-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc/testsuite:
	* gcc.target/i386/pr38534-1.c: Add -fomit-frame-pointer to
	dg-options.
	* gcc.target/i386/pr38534-2.c: Likewise.
	* gcc.target/i386/pr38534-3.c: Likewise.
	* gcc.target/i386/pr38534-4.c: Likewise.
2024-02-01 12:59:29 +01:00
Rainer Orth
7fd4bb1d98 testsuite: i386: Fix gcc.target/i386/no-callee-saved-1.c etc. on Solaris/x86
The gcc.target/i386/no-callee-saved-[12].c tests FAIL on Solaris/x86:

FAIL: gcc.target/i386/no-callee-saved-1.c scan-assembler-not push
FAIL: gcc.target/i386/no-callee-saved-2.c scan-assembler-not push

In both cases, the test expect the Linux/x86 default of
-fomit-frame-pointer, while Solaris/x86 defaults to
-fno-omit-frame-pointer.

So this patch explicitly specifies -fomit-frame-pointer.

Tested on i386-pc-solaris2.11 (as and gas) and i686-pc-linux-gnu.

2024-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc/testsuite:
	* gcc.target/i386/no-callee-saved-1.c: Add -fomit-frame-pointer to
	dg-options.
	* gcc.target/i386/no-callee-saved-2.c: Likewise.
2024-02-01 12:53:06 +01:00
Rainer Orth
6353c39699 testsuite: i386: Fix gcc.target/i386/avx512vl-stv-rotatedi-1.c on 32-bit Solaris/x86
gcc.target/i386/avx512vl-stv-rotatedi-1.c FAILs on 32-bit Solaris/x86
since its introduction in

commit 4814b63c3c
Author: Roger Sayle <roger@nextmovesoftware.com>
Date:   Mon Jul 10 09:04:29 2023 +0100

    i386: Add AVX512 support for STV of SI/DImode rotation by constant.

FAIL: gcc.target/i386/avx512vl-stv-rotatedi-1.c scan-assembler-times vpro[lr]q 29

While the test depends on -mstv, 32-bit Solaris/x86 defaults to
-mstackrealign which is incompatible.

The patch thus specifies -mstv -mno-stackrealign explicitly.

Tested on i386-pc-solaris2.11 and i686-pc-linux-gnu.

2024-01-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc/testsuite:
	* gcc.target/i386/avx512vl-stv-rotatedi-1.c: Add -mstv
	-mno-stackrealign to dg-options.
2024-02-01 12:50:50 +01:00
Rainer Orth
ee7011eab6 testsuite: i386: Fix gcc.target/i386/pr70321.c on 32-bit Solaris/x86
gcc.target/i386/pr70321.c FAILs on 32-bit Solaris/x86 since its
introduction in

commit 43201f2c21
Author: Roger Sayle <roger@nextmovesoftware.com>
Date:   Mon May 30 21:20:09 2022 +0100

    PR target/70321: Split double word equality/inequality after STV on x86.

FAIL: gcc.target/i386/pr70321.c scan-assembler-times mov 1

The failure happens because 32-bit Solaris/x86 defaults to
-fno-omit-frame-pointer.

Fixed by specifying -fomit-frame-pointer explicitly.

Tested on i386-pc-solaris2.11 and i686-pc-linux-gnu.

2024-01-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc/testsuite:
	* gcc.target/i386/pr70321.c: Add -fomit-frame-pointer to
	dg-options.
2024-02-01 12:48:57 +01:00
Rainer Orth
e98edc6a3c c++: Fix g++.dg/ext/attr-section2.C etc. with Solaris/SPARC as
The new g++.dg/ext/attr-section2*.C tests FAIL on Solaris/SPARC with the
native assembler:

+FAIL: g++.dg/ext/attr-section2.C -std=c++14 scan-assembler
.(section|csect)[ \\\\t]+.foo
+FAIL: g++.dg/ext/attr-section2.C -std=c++17 scan-assembler
.(section|csect)[ \\\\t]+.foo
+FAIL: g++.dg/ext/attr-section2.C -std=c++20 scan-assembler
.(section|csect)[ \\\\t]+.foo

The problem is that the SPARC assembler requires the section name to be
double-quoted, like

        .section        ".foo%_Z3varIiE",#alloc,#write,#progbits

This patch allows for that.  At the same time, it quotes literal dots in
the REs.

Tested on sparc-sun-solaris2.11 (as and gas) and i386-pc-solaris2.11 (as
and gas).

2024-01-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc/testsuite:
	* g++.dg/ext/attr-section2.C (scan-assembler): Quote dots.  Allow
	for double-quoted section name.
	* g++.dg/ext/attr-section2a.C: Likewise.
	* g++.dg/ext/attr-section2b.C: Likewise.
2024-02-01 12:46:20 +01:00
GCC Administrator
dd3455f695 Daily bump. 2024-02-01 11:40:50 +00:00
Thomas Schwinge
31938936d7 GCN: Remove 'FIRST_{SGPR,VGPR,AVGPR}_REG', 'LAST_{SGPR,VGPR,AVGPR}_REG' from machine description
They're not used there, and we avoid potentially out-of-sync definitions.

	gcc/
	* config/gcn/gcn.md (FIRST_SGPR_REG, LAST_SGPR_REG)
	(FIRST_VGPR_REG, LAST_VGPR_REG, FIRST_AVGPR_REG, LAST_AVGPR_REG):
	Don't 'define_constants'.
2024-02-01 12:29:25 +01:00
Thomas Schwinge
f9eb021283 GCN: Remove 'SGPR_OR_VGPR_REGNO_P' definition
..., which was always (a) unused, and (b) bogus: always-false.

	gcc/
	* config/gcn/gcn.h (SGPR_OR_VGPR_REGNO_P): Remove.
2024-02-01 12:29:00 +01:00
Thomas Schwinge
6c2a40f4f4 GCN, RDNA 3: Adjust 'sync_compare_and_swap<mode>_lds_insn'
For OpenACC/GCN '-march=gfx1100', a lot of libgomp OpenACC test cases FAIL:

    /tmp/ccGfLJ8a.mkoffload.2.s:406:2: error: instruction not supported on this GPU
            ds_cmpst_rtn_b32 v0, v0, v4, v3
            ^

In RDNA 3, 'ds_cmpst_[...]' has been replaced by 'ds_cmpstore_[...]', and the
notes for 'ds_cmpst_[...]' in pre-RDNA 3 ISA manuals:

    Caution, the order of src and cmp are the *opposite* of the BUFFER_ATOMIC_CMPSWAP opcode.

..., have been resolved for 'ds_cmpstore_[...]' in the RDNA 3 ISA manual:

    In this architecture the order of src and cmp agree with the BUFFER_ATOMIC_CMPSWAP opcode.

..., and therefore '%2', '%3' now swapped with regards to GCC operand order.
Most of the affected libgomp OpenACC test cases then PASS their execution test.

	gcc/
	* config/gcn/gcn.md (sync_compare_and_swap<mode>_lds_insn)
	[TARGET_RDNA3]: Adjust.
2024-02-01 12:27:08 +01:00
Gaius Mulley
75f49cf82e PR modula2/111627 defend against ICE
Although PR 111627 can be fixed by renaming testsuite modules it
highlighted that a possible ICE can occur if a malformed
implementation module is actually a program module.  This small
patch defends against this ICE and checks to see whether the module
is a DefImp before testing IsDefinitionForC.

gcc/m2/ChangeLog:

	PR modula2/111627
	PR modula2/112506
	* gm2-compiler/M2Comp.mod (Pass0CheckMod): Test IsDefImp before
	checking IsDefinitionForC.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2024-02-01 10:24:02 +00:00
Richard Biener
b84f8a5e0a tree-optimization/113693 - LC SSA and region VN
The following fixes LC SSA preserving with region VN which was broken
when availability checking was enhanced to treat not visited value
numbers as available.  The following makes sure to honor availability
data we put in place for LC SSA preserving instead.

	PR tree-optimization/113693
	* tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Honor avail
	data when available.

	* gcc.dg/pr113693.c: New testcase.
2024-02-01 11:12:47 +01:00
Szabolcs Nagy
d85c17a2b6 aarch64: libgcc: Cleanup ELF marking in asm
Use aarch64-asm.h in asm code consistently, this was started in

  commit c608ada288
  Author:     Zac Walker <zacwalker@microsoft.com>
  CommitDate: 2024-01-23 15:32:30 +0000

  Ifdef `.hidden`, `.type`, and `.size` pseudo-ops for `aarch64-w64-mingw32` target

But that commit failed to remove some existing markings from asm files,
which means some objects got double marked with gnu property notes.

libgcc/ChangeLog:

	* config/aarch64/crti.S: Remove stack marking.
	* config/aarch64/crtn.S: Remove stack marking, include aarch64-asm.h
	* config/aarch64/lse.S: Remove stack and GNU property markings.
2024-02-01 09:10:23 +00:00
Jakub Jelinek
ceb242f530 gimple-low: Remove .ASAN_MARK calls on TREE_STATIC variables [PR113531]
Since the r14-1500-g4d935f52b0d5c0 commit we promote an initializer_list
backing array to static storage where appropriate, but this happens after
we decided to add it to asan_poisoned_variables.  As a result we add
unpoison/poison for it to the gimple.  But then sanopt removes the unpoison.
So the second time we call the function and want to load from the array asan
still considers it poisoned.

The following patch fixes it by removing the .ASAN_MARK internal calls
during gimple lowering if they refer to TREE_STATIC vars.

2024-02-01  Jakub Jelinek  <jakub@redhat.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/113531
	* gimple-low.cc (lower_stmt): Remove .ASAN_MARK calls
	on variables which were promoted to TREE_STATIC.

	* g++.dg/asan/initlist1.C: New test.

Co-authored-by: Jason Merrill <jason@redhat.com>
2024-02-01 09:16:57 +01:00
Roger Sayle
2f14c0dbb7 PR target/113560: Enhance is_widening_mult_rhs_p.
This patch resolves PR113560, a code quality regression from GCC12
affecting x86_64, by enhancing the middle-end's tree-ssa-math-opts.cc
to recognize more instances of widening multiplications.

The widening multiplication perception code identifies cases like:

	_1 = (unsigned __int128) x;
	__res = _1 * 100;

but in the reported test case, the original input looks like:

	_1 = (unsigned long long) x;
	_2 = (unsigned __int128) _1;
	__res = _2 * 100;

which gets optimized by constant folding during tree-ssa to:

	_2 = x & 18446744073709551615;  // x & 0xffffffffffffffff
	__res = _2 * 100;

where the BIT_AND_EXPR hides (has consumed) the extension operation.
This reveals the more general deficiency (missed optimization
opportunity) in widening multiplication perception that additionally
both

__int128 foo(__int128 x, __int128 y) {
  return (x & 1000) * (y & 1000)
}

and

unsigned __int128 bar(unsigned __int128 x, unsigned __int128) {
  return (x >> 80) * (y >> 80);
}

should be recognized as widening multiplications.  Hence rather than
test explicitly for BIT_AND_EXPR (as in the first version of this patch)
the more general solution is to make use of range information, as
provided by tree_non_zero_bits.

As a demonstration of the observed improvements, function foo above
currently with -O2 compiles on x86_64 to:

foo:	movq    %rdi, %rsi
        movq    %rdx, %r8
        xorl    %edi, %edi
        xorl    %r9d, %r9d
        andl    $1000, %esi
        andl    $1000, %r8d
        movq    %rdi, %rcx
        movq    %r9, %rdx
        imulq   %rsi, %rdx
        movq    %rsi, %rax
        imulq   %r8, %rcx
        addq    %rdx, %rcx
        mulq    %r8
        addq    %rdx, %rcx
        movq    %rcx, %rdx
        ret

with this patch, GCC recognizes the *w and instead generates:

foo:    movq    %rdi, %rsi
        movq    %rdx, %r8
        andl    $1000, %esi
        andl    $1000, %r8d
        movq    %rsi, %rax
        imulq   %r8
        ret

which is perhaps easier to understand at the tree-level where

__int128 foo (__int128 x, __int128 y)
{
  __int128 _1;
  __int128 _2;
  __int128 _5;

  <bb 2> [local count: 1073741824]:
  _1 = x_3(D) & 1000;
  _2 = y_4(D) & 1000;
  _5 = _1 * _2;
  return _5;

}

gets transformed to:

__int128 foo (__int128 x, __int128 y)
{
  __int128 _1;
  __int128 _2;
  __int128 _5;
  signed long _7;
  signed long _8;

  <bb 2> [local count: 1073741824]:
  _1 = x_3(D) & 1000;
  _2 = y_4(D) & 1000;
  _7 = (signed long) _1;
  _8 = (signed long) _2;
  _5 = _7 w* _8;
  return _5;
}

2023-02-01  Roger Sayle  <roger@nextmovesoftware.com>
	    Richard Biener  <rguenther@suse.de>

gcc/ChangeLog
	PR target/113560
	* tree-ssa-math-opts.cc (is_widening_mult_rhs_p): Use range
	information via tree_non_zero_bits to check if this operand
	is suitably extended for a widening (or highpart) multiplication.
	(convert_mult_to_widen): Insert explicit casts if the RHS or LHS
	isn't already of the claimed type.

gcc/testsuite/ChangeLog
	PR target/113560
	* g++.target/i386/pr113560.C: New test case.
	* gcc.target/i386/pr113560.c: Likewise.
	* gcc.dg/pr87954.c: Update test case.
2024-02-01 06:10:42 +00:00
Edwin Lu
fd4829dde4 Revert "RISC-V: Add non-vector types to dfa pipelines"
This reverts commit 26c34b809c.
2024-01-31 21:50:58 -08:00
Edwin Lu
2a30dd3a76 Revert "RISC-V: Add vector related pipelines"
This reverts commit e56fb037d9.
2024-01-31 21:49:27 -08:00
Edwin Lu
017b4c2a49 Revert "RISC-V: Use default cost model for insn scheduling"
This reverts commit 4b799a16ae.
2024-01-31 21:49:25 -08:00
Edwin Lu
be697c0ab1 Revert "RISC-V: Enable assert for insn_has_dfa_reservation"
This reverts commit 23cd2961bd.
2024-01-31 21:49:20 -08:00
Edwin Lu
23cd2961bd RISC-V: Enable assert for insn_has_dfa_reservation
Enables assert that every typed instruction is associated with a
dfa reservation

gcc/ChangeLog:

	* config/riscv/riscv.cc (riscv_sched_variable_issue): enable assert
2024-01-31 17:32:21 -08:00
Edwin Lu
4b799a16ae RISC-V: Use default cost model for insn scheduling
Use default cost model scheduling on these test cases. All these tests
introduce scan dump failures with -mtune generic-ooo. Since the vector
cost models are the same across all three tunes, some of the tests
in PR113249 will be fixed with this patch series.

	PR target/113249

gcc/testsuite/ChangeLog:

	* g++.target/riscv/rvv/base/bug-1.C: use default scheduling
	* gcc.target/riscv/rvv/autovec/reduc/reduc_call-2.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-102.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-108.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-114.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-119.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-12.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-16.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-17.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-19.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-21.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-23.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-25.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-27.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-29.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-31.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-33.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-35.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-4.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-40.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-44.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-50.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-56.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-62.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-68.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-74.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-79.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-8.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-84.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-90.c: ditto
	* gcc.target/riscv/rvv/base/binop_vx_constraint-96.c: ditto
	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-1.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-2.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-3.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-4.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-5.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-6.c: ditto
	* gcc.target/riscv/rvv/base/pr108185-7.c: ditto
	* gcc.target/riscv/rvv/base/shift_vx_constraint-1.c: ditto
	* gcc.target/riscv/rvv/vsetvl/pr111037-3.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-29.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-32.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-33.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-17.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-11.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-4.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-5.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-6.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-7.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-8.c: ditto
	* gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-9.c: ditto
	* gfortran.dg/vect/vect-8.f90: ditto

Signed-off-by: Edwin Lu <ewlu@rivosinc.com>
2024-01-31 17:32:21 -08:00
Edwin Lu
e56fb037d9 RISC-V: Add vector related pipelines
Creates new generic vector pipeline file common to all cpu tunes.
Moves all vector related pipelines from generic-ooo to generic-vector-ooo.
Creates new vector crypto related insn reservations.

gcc/ChangeLog:

	* config/riscv/generic-ooo.md (generic_ooo): Move reservation
	(generic_ooo_vec_load): ditto
	(generic_ooo_vec_store): ditto
	(generic_ooo_vec_loadstore_seg): ditto
	(generic_ooo_vec_alu): ditto
	(generic_ooo_vec_fcmp): ditto
	(generic_ooo_vec_imul): ditto
	(generic_ooo_vec_fadd): ditto
	(generic_ooo_vec_fmul): ditto
	(generic_ooo_crypto): ditto
	(generic_ooo_perm): ditto
	(generic_ooo_vec_reduction): ditto
	(generic_ooo_vec_ordered_reduction): ditto
	(generic_ooo_vec_idiv): ditto
	(generic_ooo_vec_float_divsqrt): ditto
	(generic_ooo_vec_mask): ditto
	(generic_ooo_vec_vesetvl): ditto
	(generic_ooo_vec_setrm): ditto
	(generic_ooo_vec_readlen): ditto
	* config/riscv/riscv.md: include generic-vector-ooo
	* config/riscv/generic-vector-ooo.md: New file. to here

Signed-off-by: Edwin Lu <ewlu@rivosinc.com>
Co-authored-by: Robin Dapp <rdapp.gcc@gmail.com>
2024-01-31 17:32:21 -08:00
Edwin Lu
26c34b809c RISC-V: Add non-vector types to dfa pipelines
This patch adds non-vector related insn reservations and updates/creates
new insn reservations so all non-vector typed instructions have a reservation.

gcc/ChangeLog:

	* config/riscv/generic-ooo.md (generic_ooo_sfb_alu): Add reservation
	(generic_ooo_branch): ditto
	* config/riscv/generic.md (generic_sfb_alu): ditto
	(generic_fmul_half): ditto
	* config/riscv/riscv.md: Remove cbo, pushpop, and rdfrm types
	* config/riscv/sifive-7.md (sifive_7_hfma):Add reservation
	(sifive_7_popcount): ditto
	* config/riscv/vector.md: change rdfrm to fmove
	* config/riscv/zc.md: change pushpop to load/store

Signed-off-by: Edwin Lu <ewlu@rivosinc.com>
2024-01-31 17:32:21 -08:00
Andrew Pinski
dbf847d2c8 aarch64: -mstrict-align vs __arm_data512_t [PR113657]
After r14-1187-gd6b756447cd58b, simplify_gen_subreg can return
NULL for "unaligned" memory subreg. Since V8DI has an alignment of 8 bytes,
using TImode causes simplify_gen_subreg to return NULL.
This fixes the issue by using DImode instead for the loop. And then we will have
later on the STP/LDP pass combine it back into STP/LDP if needed.
Since strict align is less important (usually used for firmware and early boot only),
not doing LDP/STP here is ok.

Built and tested for aarch64-linux-gnu with no regressions.

	PR target/113657

gcc/ChangeLog:

	* config/aarch64/aarch64-simd.md (split for movv8di):
	For strict aligned mode, use DImode instead of TImode.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/acle/ls64_strict_align.c: New test.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
2024-01-31 16:18:41 -08:00
David Malcolm
cc7aebff74 analyzer: fix skipping of debug stmts [PR113253]
PR analyzer/113253 reports a case where the analyzer output varied
with and without -g enabled.

The root cause was that debug stmts were in the
FOR_EACH_IMM_USE_FAST list for SSA names, leading to the analyzer's
state purging logic differing between the -g and non-debugging cases,
and thus leading to differences in the exploration of the user's code.

Fix by skipping such stmts in the state-purging logic, and removing
debug stmts when constructing the supergraph.

gcc/analyzer/ChangeLog:
	PR analyzer/113253
	* region-model.cc (region_model::on_stmt_pre): Add gcc_unreachable
	for debug statements.
	* state-purge.cc
	(state_purge_per_ssa_name::state_purge_per_ssa_name): Skip any
	debug stmts in the FOR_EACH_IMM_USE_FAST list.
	* supergraph.cc (supergraph::supergraph): Don't add debug stmts
	to the supernodes.

gcc/testsuite/ChangeLog:
	PR analyzer/113253
	* gcc.dg/analyzer/deref-before-check-pr113253.c: New test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2024-01-31 18:26:26 -05:00
Joseph Myers
d22d1a9346 c: Fix ICE for nested enum redefinitions with/without fixed underlying type [PR112571]
Bug 112571 reports an ICE-on-invalid for cases where an enum is
defined, without a fixed underlying type, inside the enum type
specifier for a definition of that same enum with a fixed underlying
type.

The ultimate cause is attempting to access ENUM_UNDERLYING_TYPE in a
case where it is NULL.  Avoid this by clearing
ENUM_FIXED_UNDERLYING_TYPE_P in thie case of inconsistent definitions.

Bootstrapped wth no regressions for x86_64-pc-linux-gnu.

	PR c/112571

gcc/c/
	* c-decl.cc (start_enum): Clear ENUM_FIXED_UNDERLYING_TYPE_P when
	defining without a fixed underlying type an enumeration previously
	declared with a fixed underlying type.

gcc/testsuite/
	* gcc.dg/c23-enum-9.c, gcc.dg/c23-enum-10.c: New tests.
2024-01-31 21:39:53 +00:00
Robin Dapp
8123f3ca3f match: Fix vcond into conditional op folding [PR113607].
In PR113607 we see an invalid fold of

  _429 = .COND_SHL (mask_patt_205.47_276, vect_cst__262, vect_cst__262, { 0, ... });
  vect_prephitmp_129.51_282 = _429;
  vect_iftmp.55_287 = VEC_COND_EXPR <mask_patt_209.54_286, vect_prephitmp_129.51_282, vect_cst__262>;

to

  Applying pattern match.pd:9607, gimple-match-10.cc:3817
  gimple_simplified to vect_iftmp.55_287 = .COND_SHL (mask_patt_205.47_276, vect_cst__262, vect_cst__262, { 0, ... });

where we essentially use COND_SHL's else instead of VEC_COND_EXPR's.

This patch adjusts the corresponding match.pd pattern and makes it only
match when the else values are the same.

That, however, causes the exact test case for which this pattern was
introduced for to fail.  Therefore XFAIL it for now.

gcc/ChangeLog:

	PR middle-end/113607

	* match.pd: Make sure else values match when folding a
	vec_cond into a conditional operation.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/sve/pre_cond_share_1.c: XFAIL.
	* gcc.target/riscv/rvv/autovec/pr113607-run.c: New test.
	* gcc.target/riscv/rvv/autovec/pr113607.c: New test.
2024-01-31 21:29:40 +01:00
Marek Polacek
d836db149d c++: add deprecation notice for -fconcepts-ts
We plan to remove -fconcepts-ts in GCC 15 and thus remove the flag_concepts_ts
code.  This note is an admonishing reminder to convert the Concepts TS
code to C++20 Concepts.

gcc/c-family/ChangeLog:

	* c-opts.cc (c_common_post_options): Add an inform saying that
	-fconcepts-ts is deprecated and will be removed in GCC 15.

gcc/ChangeLog:

	* doc/invoke.texi: Mention that -fconcepts-ts was deprecated in GCC 14.
2024-01-31 15:12:16 -05:00
Martin Uecker
f6ba433d3c Fix ICE with -g and -std=c23 when forming composite types [PR113438]
Set TYPE_STUB_DECL to an artificial decl when creating a new structure
as a composite type.

	PR c/113438

gcc/c/
	* c-typeck.cc (composite_type_internal): Set TYPE_STUB_DECL.

gcc/testsuite/
	* gcc.dg/pr113438.c: New test.
2024-01-31 20:56:01 +01:00
Jonathan Yong
3fed1609f6 uninit-pr108968-register.c: use __UINTPTR_TYPE__ for LLP64
Ensure sp variable is long enough by using __UINTPTR_TYPE__ for
rsp.

gcc/testsuite/ChangeLog:

	* c-c++-common/analyzer/uninit-pr108968-register.c:
	Use __UINTPTR_TYPE__ instead of unsigned long for LLP64.
2024-01-31 16:12:56 +00:00
Gaius Mulley
dcf579cb61 modula2: tidyup patch
This patch improves a comment and also adds the location tokenno to
possibly exported idents as they are encountered.

gcc/m2/ChangeLog:

	* gm2-compiler/M2Comp.mod (Pass0CheckMod): Tidy up comment.
	* gm2-compiler/P1Build.bnf (PossiblyExportIdent): Replace
	PushTF with PushTFtok.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2024-01-31 15:51:49 +00:00
Gaius Mulley
4fd094835a PR modula2/111627 Excess test fails with a case-preserving-case-insensitive source tree
This patch renames gm2 testsuite modules whose names conflict with library
modules.  The conflict is not seen on case preserving case sensitive file
systems.

gcc/testsuite/ChangeLog:

	PR modula2/111627
	* gm2/pim/pass/stdio.mod: Moved to...
	* gm2/pim/pass/teststdio.mod: ...here.
	* gm2/pim/run/pass/builtins.mod: Moved to...
	* gm2/pim/run/pass/testbuiltins.mod: ...here.
	* gm2/pim/run/pass/math.mod: Moved to...
	* gm2/pim/run/pass/testmath.mod: ...here.
	* gm2/pim/run/pass/math2.mod: Moved to...
	* gm2/pim/run/pass/testmath2.mod: ...here.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
2024-01-31 15:44:32 +00:00
Tamar Christina
f7935beef7 AArch64: relax cbranch tests to accepted inverted branches [PR113502]
Recently something in the midend had started inverting the branches by inverting
the condition and the branches.

While this is fine, it makes it hard to actually test.  In RTL I disable
scheduling and BB reordering to prevent this.  But in GIMPLE there seems to be
nothing I can do.  __builtin_expect seems to have no impact on the change since
I suspect this is happening during expand where conditions can be flipped
regardless of probability during compare_and_branch.

Since the mid-end has plenty of correctness tests, this weakens the backend
tests to just check that a correct looking sequence is emitted.

gcc/testsuite/ChangeLog:

	PR testsuite/113502
	* gcc.target/aarch64/sve/vect-early-break-cbranch.c: Ignore exact branch.
	* gcc.target/aarch64/vect-early-break-cbranch.c: Likewise.
2024-01-31 14:52:59 +00:00
Tamar Christina
0a64045592 hwasan: Remove testsuite check for a complaint message [PR112644]
With recent updates to hwasan runtime libraries, the error reporting for
this particular check is has been reworked.

I would question why it has lost this message.  To me it looks strange
that num_descriptions_printed is incremented whenever we call
PrintHeapOrGlobalCandidate whether that function prints anything or not.
(See PrintAddressDescription in libsanitizer/hwasan/hwasan_report.cpp).

The message is no longer printed because we increment this
num_descriptions_printed variable indicating that we have found some
description.

I would like to question this upstream, but it doesn't look that much of
a problem and if pressed for time we should just change our testsuite.
Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.

gcc/testsuite/ChangeLog:

	PR sanitizer/112644
	* c-c++-common/hwasan/hwasan-thread-clears-stack.c: Update testcase.
2024-01-31 14:51:36 +00:00