https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80732

--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> ---
>     double (*pf1)(double, double, double) = dlsym(hdl, "f1");

Ok, so here we have problem that usage of target_attribute for a function f1,
generates: f1 (default implementation), f1.fma (fma implementation),
f1.resolver and f1.ifunc (which is ifunc alias pointing to f1.resolver). That
said, here
fix is:

     double (*pf1)(double, double, double) = dlsym(hdl, "f1.ifunc");

>     double (*pk1)(double, double, double, void**) = dlsym(hdl, "k1");
>     double (*_pf1)(double, double, double);

This one is really issue as GCC does not redirect:

double k1(double a, double b, double c, void **p)
{
    *p = f1;
    return f1(a, b, c);
}

to *p = f1.func. I'll attach patch candidate.

Reply via email to