tree c267a3575e52a159f224fe4ed465e1866a86ea38
parent 68fd6f4eb86121d107dd4d0b282b11b48e82183b
author Alexandros Lamprineas <alexandros.lamprineas@arm.com> 1748858640 +0100
committer GitHub <noreply@github.com> 1748858640 +0100
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJoPXcQCRC1aQ7uu5UhlAAAhiUQAALQKT9VKOI13E/rm3EUVE5U
 HbBsJqsLGt4pk5rEzTdUvyHlk4yfWLwxRrERmzCV6W6dTZc4JPh/Xz3ylXNDzZcC
 PyLJOm59YfJmx32TWlRxbhThqq9DTAEoWcfdMfPLeZxayeYx78i5TrPH2r32p04n
 9ZwihC3639ht/jWWydxrptb8Q2c8mQflBqiQJBSB3Hc2PlA8Kh0s6Yv2BadrOCKL
 3B3r9E/OR3zvd2PAfLIsT7mV/CWOsA95iVPeaGz2hTGOlnk38rZ7hsJIiRZ5L54O
 MpVzK7mO2ozX1FIeeoUAtn+CB/VPCwsuc19KLlzySn2GStTRU8XrNeTVZOnKOU/P
 R+tGZZxlVysk6wdB665djhza7jGHVKUCZUmTX9uFKcB8Xjgoy8IPFA1x++vG/2q1
 LWRxKXKIek5wfVT87LTU/YRWJBi3EgbkGYTPPELcTzQwl6F9O6wPtJ+O9GGLlChE
 Z0UOHukZ0Di6KFXDG57bZl1ocCUONbCEghtMAp2UvBtnw38djG8UP0ZxkBF+FLjO
 gVupwKQy4zHRkqXXQQ0H87aq8E9IkNs+4UPOhPPE2xw8eiEx4zxA0wVepWBx70R6
 ZLrlf9fCV6ERTgRtCeMI6erGpgIjbR8xuTBXkuq9D/ylgUJZhcAJuUpiKvPvndBu
 OknpDUHoh0lt7+joH7ae
 =g1ET
 -----END PGP SIGNATURE-----
 

[Clang][FMV] Stop emitting implicit default version using target_clones. (#141808)

With the current behavior the following example yields a linker error:
"multiple definition of `foo.default'"

// Translation Unit 1
__attribute__((target_clones("dotprod, sve"))) int foo(void) { return 1; }

// Translation Unit 2
int foo(void) { return 0; }
__attribute__((target_version("dotprod"))) int foo(void);
__attribute__((target_version("sve"))) int foo(void);
int bar(void) { return foo(); }

That is because foo.default is generated twice. As a user I don't find
this particularly intuitive. If I wanted the default to be generated in
TU1 I'd rather write target_clones("dotprod, sve", "default")
explicitly.

When changing the code I noticed that the RISC-V target defers the
resolver emission when encountering a target_version definition. This
seems accidental since it only makes sense for AArch64, where we only
emit a resolver once we've processed the entire TU, and only if the
default version is present. I've changed this so that RISC-V immediately
emmits the resolver. I adjusted the codegen tests since the functions
now appear in a different order.

Implements https://github.com/ARM-software/acle/pull/377