On Tue, Aug 25, 2026 at 12:20 AM Josef Melcr <[email protected]> wrote: > > On Tue Aug 25, 2026 at 1:48 AM CEST, Andrea Pinski wrote: > > 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. > > I forgot to ask, is this okay for the 16 branch as well? Thanks :)
Yes. > > Josef > > > > >> > >> 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 > >> > >
