On Mon, Nov 10, 2025 at 10:28 AM Karl Meakin via Sourceware Forge
<[email protected]> wrote:
>
> Hi gcc-patches mailing list,
> Karl Meakin <[email protected]> has requested that the following
> forgejo pull request
> be published on the mailing list.
>
> Created on: 2025-09-30 16:40:31+00:00
> Latest update: 2025-11-10 18:26:02+00:00
> Changes: 5 changed files, 59 additions, 59 deletions
> Head revision: karmea01/gcc-TEST ref km/cmpbr-fix/v1 commit
> 6140c1bd023e06f317846402be0485fbdca084e3
> Base revision: gcc/gcc-TEST ref trunk commit
> 6c56609915f2eb3350a167dfc3e6bb4df3becb42 r16-5059-g6c56609915f2eb
> Merge base: 6c56609915f2eb3350a167dfc3e6bb4df3becb42
> Full diff url: https://forge.sourceware.org/gcc/gcc-TEST/pulls/88.diff
> Discussion: https://forge.sourceware.org/gcc/gcc-TEST/pulls/88
> Requested Reviewers:
>
> Fix an ICE when compiling code that does a movcc with floating point arguments
> with `+cmpbr`. The fix was the same as
> bc11cbff9e648fdda2798bfa2d7151d5cd164b87,
> so in the second commit I merged the two patterns.
>
> Testing done:
> `make check-gcc` and `make check-target` pass.
>
> ChangeLog:
> * v1: Initial series.
> * v2: Move checks from the pattern body into the predicate, and remove unsued
> pattern
> * v3: Rebase against master
> * v4: Add GIMPLE test, `cmpbr-5.c`
I thought I approved all of these, I know there was an open question
about if I could approve patch 5/5 but I think it is obvious enough
that 2 people came up with the same patch to remove the pattern, I can
just go ahead approve it.
Karl,
Do you have git write access? If not then I will push these changes for you.
Thanks,
Andrew Pinski
>
>
> Changed files:
> - A: gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
> - A: gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
> - M: gcc/config/aarch64/aarch64.md
> - M: gcc/config/aarch64/iterators.md
> - M: gcc/config/aarch64/predicates.md
>
>
> Karl Meakin (5):
> aarch64: Fix condition accepted by mov<GPF>cc
> aarch64: Merge mov<ALLI>cc with mov<GPF>cc
> aarch64: Remove redundant checks
> aarch64: Add `aarch64_comparison_operator_cc`
> aarch64: Remove unused pattern
>
> gcc/config/aarch64/aarch64.md | 74 +++++-----------------
> gcc/config/aarch64/iterators.md | 4 ++
> gcc/config/aarch64/predicates.md | 15 +++++
> gcc/testsuite/gcc.target/aarch64/cmpbr-4.c | 12 ++++
> gcc/testsuite/gcc.target/aarch64/cmpbr-5.c | 13 ++++
> 5 files changed, 59 insertions(+), 59 deletions(-)
> create mode 100644 gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
> create mode 100644 gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
>
> Range-diff against v3:
> 1: e4c13b7ab12 ! 1: 1e9c70b1d93 aarch64: Fix condition accepted by
> mov<GPF>cc
> @@ Commit message
>
> Apply the same fix from bc11cbff9e648fdda2798bfa2d7151d5cd164b87
> ("aarch64: Fix condition accepted by mov<ALLI>cc") to `MOV<GPF>cc`.
> - Fixes ICEs when compiling code such as `cmpbr-4.c` with `+cmpbr`.
> + Fixes ICEs when compiling code such as `cmpbr-4.c` and `cmpbr-5.c`
> with `+cmpbr`.
>
> gcc/ChangeLog:
>
> @@ Commit message
> gcc/testsuite/ChangeLog:
>
> * gcc.target/aarch64/cmpbr-4.c: New test.
> + * gcc.target/aarch64/cmpbr-5.c: New test.
>
> ## gcc/config/aarch64/aarch64.md ##
> @@
> @@ gcc/testsuite/gcc.target/aarch64/cmpbr-4.c (new)
> +void ConvertRGBToHCL(Quantum red, Quantum green) {
> + if (red == MagickMax(red, green)) __builtin_abort();
> +}
> +
> + ## gcc/testsuite/gcc.target/aarch64/cmpbr-5.c (new) ##
> +@@
> ++/* { dg-do compile } */
> ++/* { dg-options "-fgimple -O1" } */
> ++#pragma GCC target "+cmpbr"
> ++typedef unsigned short us;
> ++__GIMPLE double
> ++f (us x, us y, double a, double b)
> ++{
> ++ bool c;
> ++ double d;
> ++ c = x == y;
> ++ d = c ? a : b;
> ++ return d;
> ++}
> 2: 47f37c2eed8 = 2: e56f15f92bf aarch64: Merge mov<ALLI>cc with mov<GPF>cc
> 3: e928669f383 = 3: dd1c190a751 aarch64: Remove redundant checks
> 4: 7d8df3a0c82 = 4: 10eab1ed3c8 aarch64: Add
> `aarch64_comparison_operator_cc`
> 5: d3c842f4f76 = 5: 6140c1bd023 aarch64: Remove unused pattern
> --
> 2.51.1
>