<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55548>55548</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
riscv: llc -compile-twice -filetype=obj generates mysterious ".apple_objc"
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
alexfanqi
</td>
</tr>
</table>
<pre>
test case
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
target triple = "riscv64-unknown-linux-gnu"
```
llc output
```
# fail
> llc -compile-twice -filetype=obj -mattr=+m,+a,+f,+d,+c test.ll -o twice.o
Running the pass manager twice changed the output.
Writing the result of the second run to the specified output
To generate the one-run comparison binary, just run without
the compile-twice option
```
use readelf -a and compare the output with and without -compile-twice:
```
13,14c13,14
< Start of section headers: 232 (bytes into file)
< Flags: 0x0
---
> Start of section headers: 240 (bytes into file)
> Flags: 0x1, RVC, soft-float ABI
28c28
< 000000000000003b 0000000000000000 0 0 1
---
> 0000000000000041 0000000000000000 0 0 1
33,34c33,34
< [ 4] .apple_objc PROGBITS 0000000000000000 00000040
< 0000000000000034 0000000000000000 0 0 1
---
> [ 4] .riscv.attributes RISCV_ATTRIBUTE 0000000000000000 00000040
> 0000000000000035 0000000000000000 0 0 1
58a59,62
> Attribute Section: riscv
> File Attributes
> Tag_RISCV_stack_align: 16-bytes
> Tag_RISCV_arch: "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
```
This is a major block for the Julia riscv port to bootstrap a compiler successfully. Similar issues seem to have happened before in [ppc](https://github.com/llvm/llvm-project/issues/26752) and [arm](https://reviews.llvm.org/D15950).
I understand that -compile-twice is probably not supported atm, but it would help the Julia riscv port a lot to at least get around the mysterious .apple_objc mixed in, as that seems to cause an incompatible cast into MCSymbolELF in Julia. Something looks like
```
julia: /var/tmp/portage/sys-devel/llvm-14.0.1/work/llvm/include/llvm/Support/Casting.h:269: typename llvm::cast_r
etty<X, Y*>::ret_type llvm::cast(Y*) [with X = llvm::MCSymbolELF; Y = llvm::MCSymbol; typename llvm::cast_retty<X, Y*>::ret_type = llvm::MCSymbolELF*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVttu4zYQ_Rr5hZAgUZZjP_jBuRUpWrSI3e3ukzGSKJsJRaoklcR_vzOUHTuB0822hsGLSM6cuR2yNPVu7oXzrAInovQ6ShfRJN3_w9SD3QjPavCgYGd6z6L8mkWci7iN8oWIO2wn49DE8nWQ8SmOsI01Tpc05fyNRG9lp8RBmpWuesKdvX7U5lnHSur-Jd7o_vXYO1xKVQzRdL0_uxzxnDUg1X6W3zA6EFem7aQSsX-WlWBxg2O_6wSCMOUDi1vw3uIk4pdtxK-wg6Frhq4euoqRzxKlWGxYEJWYQdF9r7XUG-a3gnXgHGtBw0bYYRertqA3og7LA_hkOPe3lf5wzgrXK89ME2ZOVEbXzPaaeTN86UQlG4liTu1fGbYRWljwYhCvRUyHyGJA7xrNSqnB7tAE9tBjyGn1WfqtOYigY28dZDovjT7r4N4RUqiFalgMDBDjoEqcWBfkh7W9oncRwBQ5KzzLEWU2rvb9IYhXjLElpk9wDjqGwLEtgbAORbHXH885JtW03GGcmNToOIp0xGenkm4VbN4eO_NLX_aQ4jg-5tJnYYzTf4dx83kYGcXt_ssVdc40Pm6UAc8Wl3eDMD6tsMZOzBvOvfnl5fsvaXqq5KTNzlp9RuY4-1mZOQU1H1f7_hRzVFyycVRcswQ6JIc1FmW1F_Tn_R-_XN6tluw8DFK6B5T-yAvj_-mFI8rAWgmRhix7CvL93fLqy3qxWt3fXf61uvkMyg_8mhc_i7KYQjFDl074UfTiAI0thzylRAuoj3tuMSePG90prhVs1oNJzkP1uAYlN0FENolDVp_fDLba0i7idSR1ybt03VID1DTU1NRU2HzE73tW20qsHMcAifTBWFYqUz2yBkdEMr_2SsJgDusM1iNWWGmMd95Ch2f2XGOZ66tKONf0Su0StpStVGBRrusxZk6Ilk5u4Ulg03VIozUrBWoRWLUU7q6rMN5YylvvOyrWiN_if4Ok1pcJqsGJUk-HLu6seUB_43TQgQM-uSg4ln5gQxQJtj0n0oonKZ5dQmISYzf46TorZgX6aZawU9fcsV4T43gS6LfwnlvJbYijhFLtmDYendCRk9A28HS7MQw3k8jRplc18pfqzjsVmDLBtahCCcCbg65vsKbXw03W7pwXVprevanbVr6gLqlJFbgBIvnakawK6AIBjevh2vCyxCysSHogyt-vlru2NOrmt1uKQQCFkTOt8Fu6KJUxj44p-Xj-1fJA-4cUvH0Ci61vO2zJILyPceR2Lq7Fk1CHmGXjJE2QZW-fjX08xhPxqb4Wxw_LwY04ukK0iCWhXOeTGamjx4SGVrCwGYOaL8imtR1gCe93yEtfySXfIk6FM2yywq_p7LtzmB5hG6YNpky4TL-GF9Nx24mjovySfftgmdY-BPdjWB_rxN2Yxmj6wjlhw1WIUZAOgkAUxKdfQAUL-AT_RArBtPxqtRvWQ1XYTd8KHa7UNykRnmc8I5rgF-FJJ-rkXcxH9TyvZ_kMRl56JeYDwSGmT7z5Do8md5rGqO0kk3E26q2a__fiL4piPB1t51k1nc6yaZnms4uLps7y8QSKi6wsU0jHk6IcKSiFcnMMNirV4nngKDK-uB7JOU85T4tsmk7zPM8SqJtJ2VSZmNWTKYeLaJyKFj30yh4jOw-Qyh6fGONUSeeP1DLC9ynSuRBBHcqHHt9odg5KvDSg_5GjoHwewH8HYMyJQg">