<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120234>120234</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-cl] Auto link `clang_rt` library when half-precision floating point types are used
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zufuliu
</td>
</tr>
</table>
<pre>
Tested LLVM 19.1.5, following code with pragma comment out failed to link. it seems frontend doesn't emit link hint for `clang_rt` library.
```c++
//#pragma comment(lib, "clang_rt.builtins-x86_64.lib")
__bf16 add16(__bf16 x, __bf16 y) {
return x + y;
}
int main(int argc, char *argv[]) {
int x = argv[0][0] - '0';
return (int)add16((__bf16)argc, (__bf16)(x));
}
```
```console
D:\notepad4>clang-cl /c test.cpp
D:\notepad4>lld-link test.obj
lld-link: error: undefined symbol: __truncsfbf2
>>> referenced by test.obj:(struct __clang::__bf16 __cdecl add16(struct __clang::__bf16, struct __clang::__bf16))
>>> referenced by test.obj:(struct __clang::__bf16 __cdecl add16(struct __clang::__bf16, struct __clang::__bf16))
>>> referenced by test.obj:(struct __clang::__bf16 __cdecl add16(struct __clang::__bf16, struct __clang::__bf16))
>>> referenced 2 more times
D:\notepad4>link test.obj
Microsoft (R) Incremental Linker Version 14.42.34435.0
Copyright (C) Microsoft Corporation. All rights reserved.
test.obj : error LNK2019: unresolved external symbol __truncsfbf2 referenced in function "struct __clang::__bf16 __cdecl add16(struct __clang::__bf16,struct __clang::__bf16)" (?add16@@YAU__bf16@__clang@@U12@0@Z)
test.exe : fatal error LNK1120: 1 unresolved externals
D:\notepad4>
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsVU-P5KYT_TT0pdQWLtz_Dj54Z7aln36zOUTZlZJLC0O5m10MFuCZ7nz6CLt7pjfJJFKUYyQk4-JR9XhVUDJGc3RENVt9YKvHhRzTyYf617EbrRkXrdeX-ieKiTQ8PX35BOWuKIsVwwfovLX-xbgjKK8JXkw6wRDksZegfN-TS-DHBJ00ljQkD9a4bwWYBJGoj9AF7xI5DdpTdAw3Cag3aYLBybgEnQ_A1lxZ6Y6HkNiagzVtkOFSMN6wNZ-HYvghD94w3E9DfM-D4daaNnNmiDdvRTsam4yLy_N2fVhXxQRBhjvGm8Oh7co1SK3LNcPt9fecXVznF4Y7YJscFQKlMTg4A8MPcGFiorJ5ZLzJp-ilcQy3eSrDUWUf6iQDMGxkOD7Put95A4CMPQMTj3BF8AyZP7AEhhvOcDMHyvgrgTkKw92N9yv1bLvGvrcx3J6nz-6e9KuweX6vs3fRW2K8eWSiYasH5xMNUldMfJxUXSoLDPcKEsVUqGGYHfwRba1eTmmegL79ynhzszHRAIXgQ56MTlNnHGmIl771NtsOhxRGp2LXdpgDiI_zgEAdBXKKNLSXN9eiYbiNKYwqweEwEc02cUvy4aA0Kfua7PehWb6_Wt3NxfMfo3_ICKH3gSCZnuK7pfO7svlkVPDRdykX9o_5Gv3PqUD52ksLT8Z9owBfKETjHZRVUWEhqkqsilzdD364BHM8TZsf8uY3dw8-DD7IZLwrABprYUJGCBQpPJMuZoo3LvBauPD0w_-Rl7u5gANFb59JA50TBSfttZS_q-N7FYyDbnQqB87v1b-Vlb9JCmYJmNjPvirOKv5z8_kKqPht27TwuURW8Tz7Zc7mpAGdadKgk1n5VyXKEnk2l3-mxbtpvn93FroWeid2ckF1uRFVVWHFy8Wp1qVab9ZKte1qrVaVaGXXrXBTkdAbLSRfmBo5ViWWm1IIgbxA2XEh2nKFerUVXccqTr00trD2uS98OC5MjCPVJXIU1cLKlmycWiOioxeYVnOXWD0uQp03LdvxGFnFrYkpvrlJJtmpp94exvxyN-O1C77T1eDlRA5O0nbLIZAyU8121suUu-zgc1tIl4EiyEAwRtKLMdj6lNIQpyucu9_RpNPYFsr3DPeZz_WzHIL_Siox3E-niAz312M-1_hbAAAA__-J8HnG">