> Am 09.11.2024 um 05:00 schrieb Andrew Pinski :
>
> This removes an (broken) simplification from fold which is already handled
> in match.
> The reason why it was broken is because of the use of wi::to_wide on the RHS
> of the
> rotate which could be 2 different types even though the LHS wa
> Am 09.11.2024 um 02:36 schrieb Andrew Pinski :
>
> After adding vn_valueize to the handle the `a | b ==/!= 0` case
> of insert_predicates_for_cond, it would go into an infinite loop
> as the Value number for either a or b could be the same as what it
> is for the whole expression. This avoid
This removes an (broken) simplification from fold which is already handled in
match.
The reason why it was broken is because of the use of wi::to_wide on the RHS of
the
rotate which could be 2 different types even though the LHS was the same type.
Since it is already handled in match (by the patt
The patch looks good to me. Thank you for fixing this, Andi.
-Original Message-
From: Andi Kleen
Sent: Thursday, October 31, 2024 4:37 PM
To: gcc-patches@gcc.gnu.org
Cc: Eugene Rozenfeld ; Andi Kleen
Subject: [EXTERNAL] [PATCH] Update gcc-auto-profile / gen_autofdo_event.py
From: Andi
This line in gcc/fortran/Make-lang.in looks wrong (copy/paste?):
+f95.fda: create_fdas_for_lto1
There are no invocations of $(CREATE_GCOV in gcc/fortran/Make-lang.in so this
is incomplete.
-Original Message-
From: Andi Kleen
Sent: Thursday, October 31, 2024 4:19 PM
To: gcc-patches@gcc
The patch looks good to me.
-Original Message-
From: Richard Biener
Sent: Wednesday, November 6, 2024 12:01 AM
To: Andi Kleen
Cc: Jason Merrill ; Andi Kleen ;
gcc-patches@gcc.gnu.org; Eugene Rozenfeld ;
pins...@gmail.com; Andi Kleen
Subject: [EXTERNAL] Re: [PATCH] PR117350: Keep asse
After adding vn_valueize to the handle the `a | b ==/!= 0` case
of insert_predicates_for_cond, it would go into an infinite loop
as the Value number for either a or b could be the same as what it
is for the whole expression. This avoids that recursion so there is
no infinite loop here.
Bootstrappe
On Fri, Nov 08, 2024 at 02:28:11PM -0600, Peter Bergner wrote:
> On 11/8/24 1:44 PM, Michael Meissner wrote:
> > diff --git a/gcc/config/rs6000/rs6000-arch.def
> > b/gcc/config/rs6000/rs6000-arch.def
> > new file mode 100644
> > index 000..e5b6e958133
> > --- /dev/null
> > +++ b/gcc/config
Tested on hppa64-hp-hpux11.11. Committed to trunk.
Dave
---
hppa: Don't allow mode size 32 in hard registers
2024-11-08 John David Anglin
gcc/ChangeLog:
PR target/117238
* config/pa/pa64-regs.h (PA_HARD_REGNO_MODE_OK): Don't allow
mode size 32.
diff --git a/gcc/con
Tested on hppa-unknown-linux-gnu and hppa64-hp-hpux11.11. Committed
to trunk and gcc-14.
Dave
---
hppa: Don't use '%' operator in base14_operand
Division is slow on hppa and mode sizes are powers of 2. So, we
can use '&' operator to check displacement alignment.
2024-11-08 John David Anglin
I should also add: the ACLE specification for the details of how function
multiversioning is supposed to work in terms of interactions of
declarations for different versions in the same or different scopes and
what happens regarding forming composite types seems rather vague. So
maybe it would
Tested on hppa-unknown-linux-gnu. Committed to trunk.
Dave
---
hppa: Don't allow large modes in hard registers
LRA has problems handling spills for OI and TI modes. There are
issues with SUBREG support as well.
This change fixes gcc.c-torture/compile/pr92618.c with LRA.
2024-11-08 John Davi
On Fri, 8 Nov 2024, Marek Polacek wrote:
> OK, I've reworded the comment to
>
> /* The call above already performed convert_lvalue_to_rvalue, but
> if it parsed an expression, read_p was false. Make sure we mark
> the expression as read. */
>
> though it's questionable
On Mon, 4 Nov 2024, alfie.richa...@arm.com wrote:
> /* Subroutine of duplicate_decls. Compare NEWDECL to OLDDECL.
> Returns true if the caller should proceed to merge the two, false
> if OLDDECL should simply be discarded. As a side effect, issues
> @@ -3365,11 +3382,53 @@ pushdecl (tre
Tested on hppa-unknown-linux-gnu and hppa64-hp-hpux11.11. Committed
to trunk and gcc-14.
Dave
---
hppa: Fix handling of secondary reloads involving a SUBREG
This is fairly subtle.
When handling spills for SUBREG arguments in pa_emit_move_sequence,
alter_subreg may be called. It in turn calls
As part of the architecture flags patches, this patch changes the use of
TARGET_POPCNTD to TARGET_POWER7. The POPCNTD instruction was added in power7
(ISA 2.06).
I have built both big endian and little endian bootstrap compilers and there
were no regressions.
In addition, I constructed a test ca
On Fri, Nov 08, 2024 at 08:43:39PM +, Joseph Myers wrote:
> On Thu, 7 Nov 2024, Marek Polacek wrote:
>
> > @@ -8355,7 +8492,9 @@ c_parser_switch_statement (c_parser *parser, bool
> > *if_p, tree before_labels)
> >if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
> > && c_token
On Fri, 8 Nov 2024 13:52:55 +0100
Jakub Jelinek wrote:
> Rather than a diff from /dev/null,
> > it's a blob with the exact file contents. I hope it is correct in
> > this form.
>
> That is just how the web git viewer presents new file commits.
> On gcc-patches those should be posted as normal p
On Fri, Nov 8, 2024 at 8:56 AM Wilco Dijkstra wrote:
>
>
> Cleanup the fusion defines by introducing AARCH64_FUSE_BASE as a common base
> level of fusion supported by almost all cores. Add AARCH64_FUSE_MOVK as a
> shortcut for all MOVK fusion. In most cases there is no change. It enables
> AARC
On Thu, 7 Nov 2024, Marek Polacek wrote:
> @@ -8355,7 +8492,9 @@ c_parser_switch_statement (c_parser *parser, bool
> *if_p, tree before_labels)
>if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
> && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
> explicit_ca
On Fri, 8 Nov 2024 13:50:45 +0100
Jakub Jelinek wrote:
> > * gcc-changelog/git_commit.py (default_changelog_locations):
> > New entry for gcc/cobol. New entry for libgcobol.
>
> Dunno if your mailer ate the tabs at the start of the above 2 lines.
> That is required so that it can be committed.
On 11/8/24 1:44 PM, Michael Meissner wrote:
> diff --git a/gcc/config/rs6000/rs6000-arch.def
> b/gcc/config/rs6000/rs6000-arch.def
> new file mode 100644
> index 000..e5b6e958133
> --- /dev/null
> +++ b/gcc/config/rs6000/rs6000-arch.def
> @@ -0,0 +1,48 @@
> +/* IBM RS/6000 CPU architecture
I have posted a new version of the patches at:
https://gcc.gnu.org/pipermail/gcc-patches/2024-November/668177.html
--
Michael Meissner, IBM
PO Box 98, Ayer, Massachusetts, USA, 01432
email: meiss...@linux.ibm.com
This patch makes -mtune=future use the same tuning decision as -mtune=power11.
2024-11-06 Michael Meissner
gcc/
* config/rs6000/power10.md (all reservations): Add future as an
alterntive to power10 and power11.
---
gcc/config/rs6000/power10.md | 144 +-
This patch adds the support that can be used in developing GCC support for
future PowerPC processors.
2024-11-06 Michael Meissner
* config.gcc (powerpc*-*-*): Add support for --with-cpu=future.
* config/rs6000/aix71.h (ASM_CPU_SPEC): Add support for -mcpu=future.
* conf
Two tests used -mvsx to raise the processor level to at least power7. These
tests were rewritten to add cpu=power7 support.
I have built both big endian and little endian bootstrap compilers and there
were no regressions.
In addition, I constructed a test case that used every archiecture define
As part of the architecture flags patches, this patch changes the use of
TARGET_MODULO to TARGET_POWER9. The modulo instructions were added in power9
(ISA
3.0). Note, I did not change the uses of TARGET_MODULO where it was explicitly
generating different code if the machine had a modulo instruct
As part of the architecture flags patches, this patch changes the use of
TARGET_FPRND to TARGET_POWER5X. The FPRND instruction was added in power5+.
I have built both big endian and little endian bootstrap compilers and there
were no regressions.
In addition, I constructed a test case that used
As part of the architecture flags patches, this patch changes the use of
TARGET_POPCNTB to TARGET_POWER5. The POPCNTB instruction was added in ISA 2.02
(power5).
I have built both big endian and little endian bootstrap compilers and there
were no regressions.
In addition, I constructed a test ca
This patch restructures the code so that -mvsx for example will not silently
convert the processor to power7. The user must now use -mcpu=power7 or higher.
This means if the user does -mvsx and the default processor does not have VSX
support, it will be an error.
I have built both big endian and
For the newer architectures, this patch changes GCC to define the _ARCH_PWR
macros using the new architecture flags instead of relying on isa options like
-mpower10.
The -mpower8-internal, -mpower10, and -mpower11 options were removed. The
-mpower11 option was removed completely, since it was jus
This patch begins the journey to move architecture bits that are not user ISA
options from rs6000_isa_flags to a new targt variable rs6000_arch_flags. The
intention is to remove switches that are currently isa options, but the user
should not be using this particular option. For example, we want u
On 2024-11-08 12:24, Richard Earnshaw (lists) wrote:
On 05/11/2024 20:06, Torbjörn SVENSSON wrote:
Based on how these functions are used in test cases, I think it's correct
to require 16-bit float support in both functions.
Without this change, the checks passes for armv8-m and armv8.1-m, bu
These patches are a clean up in the PowerPC port to move architecture bits that
are not user ISA options from rs6000_isa_flags to a new targt variable
rs6000_arch_flags. The intention is to remove switches that are currently isa
options, but the user should not be using this particular option. For
Ok for trunk and releases/gcc-14?
--
A long time ago, this test forced -march=armv6.
With -marm, the generated assembler is:
foo:
sub r0, r0, #48
cmp r0, #9
movhi r0, #0
movls r0, #1
bx lr
With -mthumb, the generated assembler is:
foo:
Jakub Jelinek writes:
> On Fri, Nov 08, 2024 at 05:44:48PM +, Richard Sandiford wrote:
>> It's for https://gcc.gnu.org/pipermail/gcc-patches/2024-November/667499.html
>> ,
>> which needs to switch to the simd clone's chosen target (SVE) in order
>> to construct the correct types. Currently t
On Fri, 8 Nov 2024 at 19:20, Torbjörn SVENSSON
wrote:
>
> Ok for trunk?
>
> --
>
> With the changes in r15-1579-g792f97b44ff, the code used as "padding" in
> the test case is optimized way. Prevent this optimization by forcing a
> read of the volatile memory.
> Also, validate that there is a far j
Ok for trunk?
--
With the changes in r15-1579-g792f97b44ff, the code used as "padding" in
the test case is optimized way. Prevent this optimization by forcing a
read of the volatile memory.
Also, validate that there is a far jump in the generated assembler.
Without this patch, the generated asse
On Fri, Nov 08, 2024 at 05:44:48PM +, Richard Sandiford wrote:
> It's for https://gcc.gnu.org/pipermail/gcc-patches/2024-November/667499.html ,
> which needs to switch to the simd clone's chosen target (SVE) in order
> to construct the correct types. Currently the patch uses:
>
> + cl_ta
Ok for trunk and releases/gcc-14?
--
gcc/testsuite/ChangeLog:
* gcc.target/arm/pr68674.c: Use effective-target arm_arch_v7a
and arm_libc_fp_abi.
Signed-off-by: Torbjörn SVENSSON
---
gcc/testsuite/gcc.target/arm/pr68674.c | 7 ---
1 file changed, 4 insertions(+), 3 deletion
On Fri, 8 Nov 2024 at 15:30, Richard Earnshaw (lists)
wrote:
>
> On 14/10/2024 16:28, Christophe Lyon wrote:
> >
> >
> > On 10/14/24 16:40, Torbjorn SVENSSON wrote:
> >> Hi Christophe,
> >>
> >> On 2024-10-14 14:16, Christophe Lyon wrote:
> >>> Hi Torbjörn,
> >>>
> >>>
> >>> On 10/13/24 19:37, Tor
Andrew Stubbs writes:
> On 08/11/2024 12:25, Richard Sandiford wrote:
>> For the aarch64 simd clones patches, it would be useful to be able to
>> push a function declaration onto the cfun stack, even though it has no
>> function body associated with it. That is, we want cfun to be null,
>> curren
On Thu, 7 Nov 2024 at 18:05, Torbjörn SVENSSON
wrote:
>
> Changes since v1:
>
> - Updated the error message to mention that arm_mve_types.h needs to be
> included.
> - Corrected some spelling errors in commit message.
>
> As the warning for pure functions returning void is not related to this
>
Hi!
clang++ adds __builtin_operator_{new,delete} builtins which as documented
work similarly to ::operator {new,delete}, except that it is an error
if the called ::operator {new,delete} is not a replaceable global operator
and allow optimizations which C++ normally allows just when those are used
On 08/11/2024 12:25, Richard Sandiford wrote:
For the aarch64 simd clones patches, it would be useful to be able to
push a function declaration onto the cfun stack, even though it has no
function body associated with it. That is, we want cfun to be null,
current_function_decl to be the decl itse
On 2024-11-08 15:30, Richard Earnshaw (lists) wrote:
On 14/10/2024 16:28, Christophe Lyon wrote:
On 10/14/24 16:40, Torbjorn SVENSSON wrote:
Hi Christophe,
On 2024-10-14 14:16, Christophe Lyon wrote:
Hi Torbjörn,
On 10/13/24 19:37, Torbjörn SVENSSON wrote:
Ok for trunk?
--
With the
This version of the already approved patch only adds the missing
word "size" to the commit message and a missing "-std=gnu23" to
the first test. If there are no new comments, I will commit this
once the pre-commit CI tests are complete.
Bootstrapped and regression tested on x86_64.
Martin
This replaces a call to _M_insert_range with open coding the loop. This
will allow removing the node generator parameter from _M_insert_range in
a later commit.
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (operator=(initializer_list)):
Refactor to not use _M_insert_range.
Cleanup the fusion defines by introducing AARCH64_FUSE_BASE as a common base
level of fusion supported by almost all cores. Add AARCH64_FUSE_MOVK as a
shortcut for all MOVK fusion. In most cases there is no change. It enables
AARCH64_FUSE_CMP_BRANCH for a few older cores since it has no measura
Remove duplicated addr_cost tables - use generic_armv9_a_addrcost_table for
Armv9-a cores and generic_armv8_a_addrcost_table for recent Armv8-a cores.
No changes in generated code.
OK for commit?
gcc/ChangeLog:
* config/aarch64/tuning_models/cortexx925.h
(cortexx925_addrcost_table): Re
The ACLE defines a new set of fp8 vector types and intrinsics that operate on
these, some of them operating on the vectors as if they were bags of bits and
some requiring an additional argument of type fpm_t.
The following patches introduce:
- the types
- intrinsics that operate without the fpm_
This patch adds the following intrinsics:
- svcvt1_bf16[_mf8]_fpm
- svcvt1_f16[_mf8]_fpm
- svcvt2_bf16[_mf8]_fpm
- svcvt2_f16[_mf8]_fpm
- svcvtlt1_bf16[_mf8]_fpm
- svcvtlt1_f16[_mf8]_fpm
- svcvtlt2_bf16[_mf8]_fpm
- svcvtlt2_f16[_mf8]_fpm
- svcvtn_mf8[_f16_x2]_fpm (unpredicated)
- svcvtnb_mf8[_f32_
Some intrinsics require setting the fpm register before calling the
specific asm opcode required.
In order to simplify review, this patch:
- adds the fpm_mode_index attribute to function_group_info and
function_instance objects
- updates existing initialisations and call sites.
- updates equalit
According to the aapcs64: If the argument is an 8-bit (...) precision
Floating-point or short vector type and the NSRN is less than 8, then the
argument is allocated to the least significant bits of register v[NSRN].
gcc/
* config/aarch64/aarch64.cc
(aarch64_vfp_is_call_or_return_
I realised that _M_merge_unique and _M_merge_multi call extract(iter)
which then has to call _M_get_previous_node to iterate through the
bucket to find the node before the one iter points to. Since the merge
function is already iterating over the entire container, we had the
previous node a moment
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (_Hashtable): Remove _Equality base
class.
(_Hashtable::_M_equal): Define equality comparison here instead
of in _Equality::_M_equal.
* include/bits/hashtable_policy.h (_Equality): Remove.
---
libstdc++-v3/
On Fri, 8 Nov 2024, Alejandro Colomar wrote:
> Hi Joseph,
>
> This is a gentle ping about this patch set, 10 days before the start of
> stage 3.
It's obviously not ready to include in its current form (using a name
different from that actually accepted into C2Y). Since it requires
significant
We have two overloads of _M_find_before_node but they have quite
different performance characteristics, which isn't necessarily obvious.
The original version, _M_find_before_node(bucket, key, hash_code), looks
only in the specified bucket, doing a linear search within that bucket
for an element th
This completely reworks the internal member functions for insertion into
unordered containers. Currently we use a mixture of tag dispatching (for
unique vs non-unique keys) and template specialization (for maps vs
sets) to correctly implement insert and emplace members.
This removes a lot of compl
This removes the overloaded _S_equals and _S_node_equals functions,
replacing them with 'if constexpr' in the handful of places they're
used.
libstdc++-v3/ChangeLog:
* include/bits/hashtable_policy.h (_Hashtable_base::_S_equals):
Remove.
(_Hashtable_base::_S_node_equals):
This adds a convenient _M_assign overload for the common case where the
node generator is the _AllocNode type. Only two places need to call
_M_assign with a _ReuseOrAllocNode node generator, so all the other
calls to _M_assign can use the new overload instead of manually
constructing a node generat
We can just use a cast to the appropriate type instead of calling a
function to do it. This gives the compiler less work to compile and
optimize, and at -O0 avoids a function call per element.
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (_Hashtable::__fwd_value_for):
Remove
Currently the _ReuseOrAllocNode::operator(Args&&...) function always
destroys the value stored in recycled nodes and constructs a new value.
The _ReuseOrAllocNode type is only ever used for implementing
assignment, either from another unordered container of the same type, or
from std::initializer_
Use scoped guard types to clean up if an exception is thrown. This
allows some try-catch blocks to be removed.
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (operator=(const _Hashtable&)): Use
RAII instead of try-catch.
(_M_assign(_Ht&&, _NodeGenerator&)): Likewise.
This reworks the internal member functions for erasure from
unordered containers, similarly to the earlier commit doing it for
insertion.
Instead of multiple overloads of _M_erase which are selected via tag
dispatching, the erase(const key_type&) member can use 'if constexpr' to
choose an appropri
There's no reason to have a separate base class defining the insert
member functions now. They can all be moved into the _Hashtable class,
which simplifies them slightly.
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (_Hashtable): Remove inheritance from
__detail::_Insert and
This patch series attempts to remove some unnecessary complexity in the
internals of std::unordered_xxx containers. There is a lot of overloading, tag
dispatching, and inheritance that can be removed by using modern C++ features
(with appropriate pragmas to disable warnings for older -std modes).
Wilco Dijkstra writes:
> Hi Richard,
>
>> That's because, once an instruction matches, the instruction should
>> continue to match. It should always be possible to set the INSN_CODE of
>> an existing instruction to -1, rerun recog, and get the same instruction
>> code back.
>>
>> Because of that,
libstdc++-v3/ChangeLog:
* include/bits/hashtable.h (_Hashtable): Add 'inline' to some
one-line constructors.
Reviewed-by: François Dumont
---
Tested x86_64-linux. Pushed to trunk.
libstdc++-v3/include/bits/hashtable.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/libst
Thanks Richard for comments.
> That said - I'd avoid canonicalizing this via match.pd given that
> inevitably will if-convert.
I see, if no more concern I will revert the simplify merged into match.pd.
> Instead I'd see it as a way to provide a generic .SAT_* expansion
> though one could say we
On 11/8/24 4:29 AM, Jakub Jelinek wrote:
Hi!
https://eel.is/c++draft/dcl.init#general-6
says that even padding bits are supposed to be zeroed during
zero-initialization.
The following patch on top of the
https://gcc.gnu.org/pipermail/gcc-patches/2024-October/665565.html
patch attempts to impleme
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/gcs-nonlocal-3.c: New test.
* gcc.target/aarch64/sme/nonlocal_goto_4.c: Update.
* gcc.target/aarch64/sme/nonlocal_goto_5.c: Update.
* gcc.target/aarch64/sme/nonlocal_goto_6.c: Update.
---
.../gcc.target/aarch64/gcs-nonlo
On Fri, 1 Nov 2024 at 10:42, Jakub Jelinek wrote:
>
> Hi!
>
> I've noticed alloc_align attribute is missing on the non-vector
> ::operator new with std::align_val_t and const std::nothrow_t&
> arguments, this patch adds it. The last hunk is just
> an attempt to make the line shorter.
> The first
From: Matthieu Longo
gcc/testsuite/ChangeLog:
* g++.target/aarch64/return_address_sign_ab_exception.C: Update.
* gcc.target/aarch64/eh_return.c: Update.
---
.../return_address_sign_ab_exception.C| 19 +--
gcc/testsuite/gcc.target/aarch64/eh_return.c | 13
From: Szabolcs Nagy
Tail calls of indirect_return functions from non-indirect_return
functions are disallowed even if BTI is disabled, since the call
site may have BTI enabled.
Following x86, mismatching attribute on function pointers is not
a type error even though this can lead to bugs.
Neede
From: Szabolcs Nagy
gcc/ChangeLog:
* config/aarch64/aarch64.cc (GNU_PROPERTY_AARCH64_FEATURE_1_GCS):
Define.
(aarch64_file_end_indicate_exec_stack): Set GCS property bit.
---
gcc/config/aarch64/aarch64.cc | 5 +
1 file changed, 5 insertions(+)
diff --git a/gcc/confi
From: Szabolcs Nagy
libatomic/ChangeLog:
* config/linux/aarch64/atomic_16.S (FEATURE_1_GCS): Define.
(GCS_FLAG): Define if GCS is enabled.
(GNU_PROPERTY): Add GCS_FLAG.
---
libatomic/config/linux/aarch64/atomic_16.S | 11 +--
1 file changed, 9 insertions(+), 2 de
From: Szabolcs Nagy
libgcc/ChangeLog:
* config/aarch64/aarch64-asm.h (FEATURE_1_GCS): Define.
(GCS_FLAG): Define if GCS is enabled.
(GNU_PROPERTY): Add GCS_FLAG.
---
libgcc/config/aarch64/aarch64-asm.h | 16 ++--
1 file changed, 14 insertions(+), 2 deletions(
From: Szabolcs Nagy
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add gcs specific
tests.
---
.../gcc.target/aarch64/pragma_cpp_predefs_4.c | 35 +++
1 file changed, 35 insertions(+)
diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cp
From: Richard Ball
This patch adds a new testcase and docs for indirect_return
attribute.
gcc/ChangeLog:
* doc/extend.texi: Add AArch64 docs for indirect_return
attribute.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/indirect_return-1.c: New test.
* gcc.target
From: Szabolcs Nagy
Follows the current linux ABI that uses single signal entry token
and shared shadow stack between thread and alt stack.
Could be behind __ARM_FEATURE_GCS_DEFAULT ifdef (only do anything
special with gcs compat codegen) but there is a runtime check anyway.
Change affected test
From: Szabolcs Nagy
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/acle/gcs-1.c: New test.
* gcc.target/aarch64/gcspopm-1.c: New test.
* gcc.target/aarch64/gcspr-1.c: New test.
* gcc.target/aarch64/gcsss-1.c: New test.
Co-authored-by: Yury Khrustalev
---
gcc/tes
On 08/11/2024 12:12, Torbjorn SVENSSON wrote:
On 2024-11-08 11:33, Richard Earnshaw (lists) wrote:
On 08/11/2024 08:54, Torbjörn SVENSSON wrote:
Changes since v1:
- Added generated assembler in commit message.
- Added comments in test case when each block is relevant.
Ok for trunk and relea
From: Szabolcs Nagy
These are scan asm tests only, relying on existing execution tests
for runtime coverage.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/gcs-nonlocal-1.c: New test.
* gcc.target/aarch64/gcs-nonlocal-1-track-speculation.c: New test.
* gcc.target/aarch64/
From: Szabolcs Nagy
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/pragma_cpp_predefs_1.c: GCS test.
---
.../gcc.target/aarch64/pragma_cpp_predefs_1.c | 30 +++
1 file changed, 30 insertions(+)
diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
b/gcc/t
From: Szabolcs Nagy
Add instructions for the Guarded Control Stack extension.
GCSSS1 and GCSSS2 are always used together in the compiler and an extra
"mov xn, 0" should be always added before GCSSS2 to clear the output
register. This is needed to get reasonable result when GCS is disabled,
when
From: Szabolcs Nagy
gcc/ChangeLog:
* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
macros for GCS.
---
gcc/config/aarch64/aarch64-c.cc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc
ind
From: Szabolcs Nagy
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/acle/chkfeat-1.c: New test.
* gcc.target/aarch64/chkfeat-1.c: New test.
* gcc.target/aarch64/chkfeat-2.c: New test.
Co-authored-by: Yury Khrustalev
Co-authored-by: Richard Sandiford
---
.../gcc.target/a
Note that compared to __builtin_aarch64_chkfeat (x) the ACLE __chkfeat(x)
flips the bits to be more intuitive (xor the input to output).
gcc/ChangeLog:
* config/aarch64/arm_acle.h (__chkfeat): New.
---
gcc/config/aarch64/arm_acle.h | 13 +
1 file changed, 13 insertions(+)
dif
From: Szabolcs Nagy
Nonlocal stack save and restore has to also save and restore the GCS
pointer. This is used in __builtin_setjmp/longjmp and nonlocal goto.
The GCS specific code is only emitted if GCS branch-protection is
enabled and the code always checks at runtime if GCS is enabled.
The ne
Add the following ACLE intrinsics:
- void *__gcspr(void);
- uint64_t __gcspopm(void);
- void *__gcsss(void *);
gcc/ChangeLog:
* config/aarch64/arm_acle.h (__gcspr): New.
(__gcspopm): New.
(__gcsss): New.
---
gcc/config/aarch64/arm_acle.h | 9 +
1 file changed,
From: Szabolcs Nagy
Add new builtins for GCS:
void *__builtin_aarch64_gcspr (void)
uint64_t __builtin_aarch64_gcspopm (void)
void *__builtin_aarch64_gcsss (void *)
The builtins are always enabled, but should be used behind runtime
checks in case the target does not support GCS. They are t
From: Szabolcs Nagy
This enables Guarded Control Stack (GCS) compatible code generation.
The "standard" branch-protection type enables it, and the default
depends on the compiler default.
gcc/ChangeLog:
* config/aarch64/aarch64-protos.h (aarch_gcs_enabled): Declare.
* config/aa
From: Szabolcs Nagy
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/pragma_cpp_predefs_4.c: Add branch-protection
tests.
---
.../gcc.target/aarch64/pragma_cpp_predefs_4.c | 50 +++
1 file changed, 50 insertions(+)
diff --git a/gcc/testsuite/gcc.target/aarch64/prag
From: Szabolcs Nagy
Builtin for chkfeat: the input argument is used to initialize x16 then
execute chkfeat and return the updated x16.
Note: the ACLE __chkfeat(x) will flip the bits to be more intuitive
(xor the input to output), but for the builtin that seems unnecessary
complication.
gcc/Chan
From: Szabolcs Nagy
This is a hint space instruction to check for enabled HW features and
update the x16 register accordingly.
Use unspec_volatile to prevent reordering it around calls since calls
can enable or disable HW features.
gcc/ChangeLog:
* config/aarch64/aarch64.md (aarch64_ch
This patch series adds support for the Guarded Control Stack extension [1].
GCS marking for binaries is specified in [2].
ACLE intrinsics are discussed in [3].
Regression tested on AArch64 and no regressions have been found.
Applies to 137b26412f6 in trunk.
Is this OK for trunk?
Sources and bra
This is not a reserved name in C++11 and C++14, so must not be defined.
Also use the appropriate feature test macros for the try_emplace members
of the Debug Mode maps.
libstdc++-v3/ChangeLog:
* include/bits/hashtable_policy.h (_Insert_base::try_emplace):
Do not define for C++11
Hi Kyrill,
On Thu, Oct 31, 2024 at 02:05:00PM +, Kyrylo Tkachov wrote:
> Hi Yury,
>
> > On 31 Oct 2024, at 14:23, Yury Khrustalev wrote:
> >
> > From: Szabolcs Nagy
> >
> > Add new builtins for GCS:
> >
> > void *__builtin_aarch64_gcspr (void)
> > uint64_t __builtin_aarch64_gcspopm (vo
On 14/10/2024 16:28, Christophe Lyon wrote:
On 10/14/24 16:40, Torbjorn SVENSSON wrote:
Hi Christophe,
On 2024-10-14 14:16, Christophe Lyon wrote:
Hi Torbjörn,
On 10/13/24 19:37, Torbjörn SVENSSON wrote:
Ok for trunk?
--
With the changes in r15-1579-g792f97b44ff, the constants have been
1 - 100 of 150 matches
Mail list logo