On Tue, Jul 15, 2025 at 11:32 AM Robin Dapp <rdapp....@gmail.com> wrote:
>
> Hi,
>
> r16-2175-g5aa21765236730 introduced an assert for floating-point modes
> when expanding an RDIV_EXPR but forgot fixed-point modes.  This patch
> adds ALL_FIXED_POINT_MODE_P to the assert.
>
> Bootstrap and regtest running on x86, aarch64, and power10.  Regtested
> on rv64gcv.  Regtest on arm running, needed to set it up still.

OK.

> Regards
>  Robin
>
>         PR middle-end/121065
>
> gcc/ChangeLog:
>
>         * cfgexpand.cc (expand_debug_expr): Allow fixed-point modes for
>         RDIV_EXPR.
>         * optabs-tree.cc (optab_for_tree_code): Ditto.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/arm/pr121065.c: New test.
> ---
>  gcc/cfgexpand.cc                        |  3 ++-
>  gcc/optabs-tree.cc                      |  3 ++-
>  gcc/testsuite/gcc.target/arm/pr121065.c | 11 +++++++++++
>  3 files changed, 15 insertions(+), 2 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/arm/pr121065.c
>
> diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
> index a656ccebf17..8a55f4f472a 100644
> --- a/gcc/cfgexpand.cc
> +++ b/gcc/cfgexpand.cc
> @@ -5358,7 +5358,8 @@ expand_debug_expr (tree exp)
>        return simplify_gen_binary (MULT, mode, op0, op1);
>
>      case RDIV_EXPR:
> -      gcc_assert (FLOAT_MODE_P (mode));
> +      gcc_assert (FLOAT_MODE_P (mode)
> +                 || ALL_FIXED_POINT_MODE_P (mode));
>        /* Fall through.  */
>      case TRUNC_DIV_EXPR:
>      case EXACT_DIV_EXPR:
> diff --git a/gcc/optabs-tree.cc b/gcc/optabs-tree.cc
> index 9308a6dfd65..0de74c7966a 100644
> --- a/gcc/optabs-tree.cc
> +++ b/gcc/optabs-tree.cc
> @@ -82,7 +82,8 @@ optab_for_tree_code (enum tree_code code, const_tree type,
>         return unknown_optab;
>        /* FALLTHRU */
>      case RDIV_EXPR:
> -      gcc_assert (FLOAT_TYPE_P (type));
> +      gcc_assert (FLOAT_TYPE_P (type)
> +                 || ALL_FIXED_POINT_MODE_P (TYPE_MODE (type)));
>        /* FALLTHRU */
>      case TRUNC_DIV_EXPR:
>      case EXACT_DIV_EXPR:
> diff --git a/gcc/testsuite/gcc.target/arm/pr121065.c 
> b/gcc/testsuite/gcc.target/arm/pr121065.c
> new file mode 100644
> index 00000000000..dfc6059a46d
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arm/pr121065.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mcpu=cortex-m55" } */
> +
> +_Accum sa;
> +char c;
> +
> +void
> +div_csa ()
> +{
> +  c /= sa;
> +}
> --
> 2.50.0
>
>

Reply via email to