<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/115679>115679</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang]When flang-new compiles for the RISC-V platform, the object files have an incorrect ABI.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
buggfg
</td>
</tr>
</table>
<pre>
I am cross-compiling the **SPEC CPU2006** benchmarks using the **LLVM 19.1.0** compiler on an Intel machine. The C/C++ examples can be successfully built into executable files using runspec and run successfully on the** RISC-V** platform. However, for Fortran examples like **410.bwaves**, building with flang-new fails, and the error is:
ld.lld: error: bwaves.lto.o: cannot link object files with different floating-point ABI from ~/gnu-riscv64-20241106/sysroot/usr/lib/crt1.o.
PS. config info
**FOPTIMIZE **= -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static **-flto** -ffast-math
**EXTRA_LDFLAGS **= -fuse-ld==ld.lld -L${gnu-riscv64}/lib/
Through debugging, I found that the ABI of bwaves.lto.o is rv64i2p1, while the ABI of the library file crt1.o is rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zmmul1p0. Clearly, bwaves.lto.o is generated incorrectly. Could you please advise me on how to resolve this issue? Thank you very much!
The complete run script is:
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -c -o block_solver.o -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -DSPEC_LP64 block_solver.f
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -c -o flow_lam.o -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -DSPEC_LP64 flow_lam.f
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -c -o flux_lam.o -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -DSPEC_LP64 flux_lam.f
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -c -o jacobian_lam.o -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -DSPEC_LP64 jacobian_lam.f
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -c -o shell_lam.o -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -DSPEC_LP64 shell_lam.f
$ flang-new --target=riscv64-unknown-linux-gnu --gcc-toolchain={RISCV} --sysroot={RISCV}/sysroot -march=rv64gcv_zba_zbb_zbc_zbs -O3 -static -flto -ffast-math -DSPEC_CPU_LP64 -fuse-ld=ld.lld -L{RISCV}/lib/ block_solver.o flow_lam.o flux_lam.o jacobian_lam.o shell_lam.o -o bwaves
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk9v6zYM_zTKhZBhK3HSHHLIn3oL0IdXvPa9DbsEsizZepElQ5KTpod99kG228bFLsOAZT24MkOa5I-k-KPOyVJzvkLpBqW7CW19Zewqb8tSlJPcFJfVHmgNzBrnMDN1I5XUJfiKAyJrRNZPj_db2D5-J3E87yWQc82qmtqjg9aNtR8efnyBZBklUTwo99_kFowGqmGvPVdQU1ZJzSN4rjhsEcm2iGwQ2QB_oXWjuANGNeQcXMsYd060Sl0gb6XyILU3wF84az3NFQchg34fiG21azgDqotwHpsbHQIdwvq2f9riH8NLo6gXxtYR_GrO_MQtIlsQxkJmrLdUf4Sl5PEt1VkSR_mZnrjr34NNiLAIgZylr0Aoqkus-RkElcoFhRBYQItbayxIh6ZrFO9QPDxVESlVoOm6VwiH3kWkvIlMeGdUa-NBSX0Ek__kzA8IdC4LKQS3XHsQylAvdYkbI7WH9WYPwpoa_kQkK3WLrXTsNJ9hEpNZkoTaZu7irDEekax1FpFMyRyRjFmfRCa6DvPxKQJmtJAlSC0MDL91MGRfH5_3X_Z_3A8woekOcE0tq9B0Z0_zWclOh9ecHl7z_PCas8Nr7gB_nQJ2nnrJBjMslDdDebAQ1HlcU1-NXN3__vxtfXjYZQ_rX56u3YnWcRxw3KHprscU8AMiM7TYXOWOFrv3LK_Te66sacsKCh7mROoyVG4PwrRd9ajvShgQNWJUH5AOQoqSNEmwOVdS8WvlcFQyt9ReuqpBD-613aEmTXyg4SRIQw5FeLAge5XM2e5Q161KmjiCreLUqkvXep_iKLnmlnpegNTMWMuZV5cItqZVBVxMC43i1HGgxUk6DjUP81GZM3gDljujTiFy6UA613I0zeC5ovrYmZ64vUDdsgqRZAwc7-Zdcc_7-WNWNj70-X2GNlu0fOt2MruaDow9tSX3oUGGrmz1UZuzxkrq9gWXugWMS8awN0axikodarvYhCn-gRY7wPiteUfyj6YGwAywgVwZdjx06dnIAMA_a86uLUcN2f_hXbgnD9vH74eHx_kMxuJBNPItbo2EUOZ8ULT-r1F49_s_QKB9uQ0Cg9-bI_CTMpNLqm-Bwsj3zZFwFVfqBjB8-L0hBP8-379L9WoNf-zgUQD96oXPV-Pobroa0k_d-rlkZtiBPY6TYjUtltMlnfBVspgmZBnPSTqpVinLF_NlIe7uhCjiPKXLmKXzxV3KSTxPF8lErnpOlCQxiaezNLoTyZyli3laTElSxALNYl5TqSKlTnVkbDnpduQqSdL5YjlRNOfKvTFuuwpaOG9Lh2axks67Dzsvveq4eVdxlO5-q7i-Kv9Anl1HRgN56GnrO2ENiz-IR0SwoiceqPb73g_sI5q0Vq0q75uOc5Is0EDpqzaPmKlDLdTp7R9urAnfQyTrEnOIZENupxX5KwAA__9C2O9H">