https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78366
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Note it is created in the caller context, thus double foo(double *, double *, int) __attribute__((target_clones("avx,default"))); double x; int main() { double a,b; x = foo (&a, &b, 1); } creates it in the program. I suppose that's a feature (but it will complicate handling in libgfortran as you need to "register" the proper target-clones in the FE when compiling user code so the resolvers get created there).