On Mon, Aug 24, 2026 at 6:05 AM Josef Melcr <[email protected]> wrote:
>
> Hi,
> references are recreated when redirecting edges in the target clone
> pass. However, the references are not created with their corresponding
> call statements, potentially leading to ICEs as shown in PR127023.  This
> patch fixes that.
>
> Bootstrapped, LTO-bootstrapped and regtested on x86_64-linux without any
> new regressions.  OK for master?

Ok.

>
> Best regards,
> Josef
>
>         PR ipa/127023
>
> gcc/ChangeLog:
>
>         * multiple_target.cc (create_dispatcher_calls): Use the call
>         statement variant of create_reference.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/i386/pr127023.c: New test.
>
> Signed-off-by: Josef Melcr <[email protected]>
> ---
>  gcc/multiple_target.cc                   |  2 +-
>  gcc/testsuite/gcc.target/i386/pr127023.c | 16 ++++++++++++++++
>  2 files changed, 17 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr127023.c
>
> diff --git a/gcc/multiple_target.cc b/gcc/multiple_target.cc
> index 3f8676f5943..01d3ff84bf3 100644
> --- a/gcc/multiple_target.cc
> +++ b/gcc/multiple_target.cc
> @@ -190,7 +190,7 @@ create_dispatcher_calls (struct cgraph_node *node)
>                 }
>
>               symtab_node *source = ref->referring;
> -             source->create_reference (inode, IPA_REF_ADDR);
> +             source->create_reference (inode, IPA_REF_ADDR, ref->stmt);
>             }
>           else if (ref->use == IPA_REF_ALIAS)
>             {
> diff --git a/gcc/testsuite/gcc.target/i386/pr127023.c 
> b/gcc/testsuite/gcc.target/i386/pr127023.c
> new file mode 100644
> index 00000000000..ecd6af57cf6
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr127023.c
> @@ -0,0 +1,16 @@
> +/* PR ipa/127023 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -fopenmp" } */
> +/* { dg-require-ifunc "" } */
> +
> +__attribute__((target_clones("default", "fma4"), noinline))
> +static void e(int f) {
> +  if (!f)
> +#pragma omp parallel
> +    for (;;)
> +      ;
> +}
> +__attribute__((target_clones("default", "fma4")))
> +void g(void) {
> +  e(1);
> +}
> --
> 2.55.0
>

Reply via email to