<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/132055>132055</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Code that uses a libcall marks internal symbol as exported when making object file
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
gbaraldi
</td>
</tr>
</table>
<pre>
This is showing up as https://github.com/JuliaLang/julia/pull/57658#issuecomment-2727385403 which is holding up julia being able to compile with LLVM20.
The issue is that a defining a libcall in a module and then having it be used is making the libcall symbol become external
```llvm
source_filename = "text"
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.14.0-macho"
declare i16 @julia_float_to_half(float)
define internal i16 @__truncsfhf2(float %0) {
%2 = call i16 @julia_float_to_half(float %0)
ret i16 %2
}
define hidden swiftcc half @julia_fp(float %0) {
%2 = fptrunc float %0 to half
ret half %2
}
@llvm.compiler.used = appending global [1 x ptr] [ptr @__truncsfhf2], section "llvm.metadata"
```
```
0000000000000000 T ___truncsfhf2
U _julia_float_to_half
0000000000000010 T _julia_fp
usr/lib/julia on debug-llvm-20 [?]
❯ llc lala.ll -filetype=obj -o llvm19.o
usr/lib/julia on debug-llvm-20 [?]
❯ nm llvm19.o
0000000000000000 t ___truncsfhf2
U _julia_float_to_half
0000000000000010 T _julia_fp
```
Not sure if this is an intentional change or not but it's between LLVM 19 and 20
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VU1zozgQ_TXypQuXEB-GAwcyjg9b2b1sdq-uBhpQRkgUErHz77ck24mT2dq57LhSRE3pvX6tbj3QWjloooplDyzbb3B1o1mqocEFVSc3jenequdRWpAW7GhOUg-wzoAWRudmy5KaiQMTh0G6cW22rZmYOPy2KolPqAcmDi9-zcRhXpVi4pDt8qxgIpHWrtSaaSLtIrETu6TIUp7AaZTt6JONRnXXZIECGvIhNorAGWjNNEtFcJJuhKenv38XfMt4zXj9PBIEds_iRnSA0FEvdYCDkk2LSoHUgDCZblUEqDtwI2kY8dXvkg4agtVS5zkm_O5fupHewfZtaoyCxldAQGdHi0bl8-f88qfU68R4bc26tHTspSKNEwFL9sCEcHR2TAjGa4fLQA46dKjwzazutoWiiSW1iWax4yypExEePow_h36Vp-ERyfdFLAqW1LEoor7g15UOr_IbPE-jP_22ex1ukbN6l3ku8mOeRjjPiqIJW2PPMd_G6Zb7aDQXKON1R63ChUDGObCUh4Yde2XQHZ05jqh6JooQM1HeIL3UBFJfzu4GPR7dsurW9mMvbhhgIuNMlMB2D4zX4GMRNF46-dOkN4IAXshdICIL6nf7T4JG2XWkwZ5k79oWPM0d-_xzTf0cKoCPbX5eg5xb-gvpl_wsDUOzvU72sg3z5xlxnkmHyzAo06AClj3EcIbZLSzb-2h2yw-Hl-2Z-AaWWieN9t0M7BM59MN2bd1tXK8S7kL-5QfPcPzE74v58vsLjv_Wha9kcSB7P1Fer3Zh4qBkc_ML8IofH1khWM2ho2YdIi8_EtyXy5JDKJzX7FGwcs_qAyjVgkKFW6Ug8vfNvc3Ekr1pXiAy4NFxuTX_UzY93TP-cFbu153VfY_-MA7s6u9dD-5q0qjDndK-66igHVEPBGYBbRw0qwPpmNhZaMidiHTwTojL4IGCb7oq6cqkxA1V8S4VKedlwTdj1fXU8zbvmzwvEMsCs7hMY8Qk5hnfFf1GVoKLjCdxGedxLvg2a4WIs6xMBcc-48hSThNKtQ1zaJZhE1y6ihPBs2yjsCFlw3dICE2ni4f7Mc32m6UK_WjWwfprIq2zHzROOkXVN9PRxe5XS_bO6CdcvtsPn7laN1qg82wWRx2cvPVfXd40L9Q68AO0WRdV_cdXLlj85V80L8bjmDgE2ZaJw7Wu10r8EwAA__8Zfz08">