<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58740>58740</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            LTO + target_clones leads to undefined references
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          tavianator
      </td>
    </tr>
</table>

<pre>
    ```console
tavianator@graphene $ clang --version
clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
tavianator@graphene $ cat foo.c
int foo(void) {
        return 1;
}
tavianator@graphene $ cat bar.c
int foo(void);

__attribute__((target_clones("popcnt", "default")))
static int bar(void) {
        return foo();
}

int main(void) {
        return bar();
}
tavianator@graphene $ clang -O1 -flto -c foo.c -o foo.o
tavianator@graphene $ clang -O1 -flto -c bar.c -o bar.o
tavianator@graphene $ clang -O1 -flto foo.o bar.o -o baz
/usr/bin/ld: /tmp/lto-llvm-0ef63e.o: in function `bar.default.1':
ld-temp.o:(.text.bar.default.1+0x2): undefined reference to `foo'
/usr/bin/ld: /tmp/lto-llvm-0ef63e.o: in function `bar.popcnt.0':
ld-temp.o:(.text.bar.popcnt.0+0x2): undefined reference to `foo'
clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVFFvmzAQ_jXmxQIZQwg88NCsijRpUl_6HjlwEG-OjWyTZvv1Oxu6rFOnttOQBcZ3_u67830-mv57Syq2jM5oZxQQdk_YnRcXKbTwxpKSjVZMJ9BACS9pp4QeaZpewDpp9OK-LK5LNC8zllWL5VHYETwp7ui1rg5VmU5dqqSer-mo59XlZEH09Gx6UMFxMk5eF9Nn7bxQCvp7aYOJ8P3sLL6PUr9JVHg6GJN1i6PU8Zfw-mJkT3hDyXa3mOj6WPCzRfqkWA1ke_-eKEdh_xrlhhXfh4Pw3srj7OFwQC8cPlbo0CmjwcUlPpmp0x4nhH_CKLyHQcxqWWjWEeGwOl52NERFEu_IbeH2gtdzjrcEzgKr-zbWEvFVrDfb5yGn6aC8oWm3HBJNTZyYfwCI9Q8AYfJhgBh12bpg_FiT-b3X-F71awP68xR-vUmVupxTBkNVAIZFq8QCz7rzQQSoqIC5Hl2WE75FlwVa9amH8xQ3YQkzD1ef_eG9Y9d42gg7a1yXGnqs_AAWdAcUiWOEeJzb_8l3ab2MvYvuzfnDbOMppHkZdoC1JsobL4ZvYGlnzmehezoIidKnT9KfKFylR0MPNMek6tkBTS8B1wFgHheDQgzX0bMyfl1rCbR5VW2LYtOwIunbom-KRiReegXtl8cHRNvRFxqkCq8jF7BfScUls1XtyfvJxWrscYxIcD5mSDsUGou8ftLJmq_QoW730rk5qHu_qbclS05tX-XbRtT5wKAbBuCFYKyphw1UTc15USdKHEG5lmx2KHsNTzRChCtgc5_IljPO85zlnG3ykmdFzlhf5gAgKl6zAZseUMYqCzwyY8fEtpHScR4dGpV03t2Mwjk5aoAYDvHF7E_GtjcRJTF6G9n_BPLp5BE">