<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/137219>137219</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[lld][ThinLTO][Arm] Spurious (?) "linking two modules of different target triples" when mixing Thumb and Armv8.2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Sentimentron
</td>
</tr>
</table>
<pre>
For complicated reasons I'm building a single binary that has some .cc files compiled with `-march=armv8.2-a+dotprod` and some with `-mthumb`. If ThinLTO is applied to all files, everything's fine. _However_, if I mix in some pre-compiled `-mthumb` files and link again, I get a "linking two modules of different target triples" error. Minimal reproducer:
```sh
#!/bin/bash
CLANG=clang
cat > dotprod.c <<- EndOfTestFile
int test_func() {
return 0;
}
EndOfTestFile
cat > test.c <<- EndOfTestFile
extern int test_func();
int main(int argc, char **argv) {
return test_func();
}
EndOfTestFile
$CLANG -flto=thin -c -o dotprod.o -target armv8.2-unknown-linux-android26 -march=armv8.2-a+dotprod dotprod.c
$CLANG -c -o test.o -emit-llvm -target armv7-unknown-linux-android26 -mthumb test.c
$CLANG -shared -nostdlib -fuse-ld=lld -Wl,--fatal-warnings -fPIC --target=arm-linux-androideabi26 dotprod.o test.o -shared -o test1.so
```
And the output:
```
ld.lld: error: Linking two modules of different target triples: 'test.o' is 'thumbv7-unknown-linux-android26' whereas 'ld-temp.o' is 'armv8.2a-unknown-linux-android26'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```
I think however that this _should_ be fine - dotprod is an optional extension in AArch32 Armv8.2 and it's usually OK to mix different Arm architecture versions together. Could the TargetTriple::isCompatibleWith method be adjusted?
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVU1v4zYQ_TX0ZUBBpizbOfig2Os26LZbYAPsMaDEkcRdihT4YSf_vhhJ2SRoNkALGLAoDec9vpl5lCHoziIeWHnLytNKptg7f_iKNuoBbfTOrmqnng5n56Fxw2h0IyMq8CiDswHumNgNUCdtlLYdSAjadgah1lb6J4i9jNDLAMENCFnTQKsNhimVNqjgqmMPbJvzQfqmZ8VJ-uGyzwSXTNwqF0fvFNvmIK2ac7xsiH0aarbNM7hr4b7X9vP9F9AB5DgajQqiA2nMDMjEEfCC_in22nZM7AK02mIGD7-7K314oAjdwh0M-hG0ncFGj_wn1TegyzmIltH2B8hOaks57qDDCBKYEPSBRIlXB4NTiTa4FpRuW_RoI0TpKTh6PU4cBaD3zmfwp7Z6kAY80vlTg54VFcun3zaff6GnlSiYWDNxrgn9XMv5bV4dP1d__caKU2Ok7eZXjYzAik-wqJo1wIojK44cPln1pb3HEM_a4BysiR6G-NAm2zCxZ-IG2O6W5RWAx5i8hZwVtGa7E8urd1I841GaD8DwMaK38A7gnJ8-DJO4e3qUvmtI56aXHpiomKik7y6v-f1k-G6-X_JlYjOpBrw10bHiRL0CvAHufmrmgC9Fe-7TZH9Yd7XcaJseubTKO63EFj5q6JcSvIGdkCa1HHAcdOTGXIY3iLsP8KbWXNR-kzf00qMCbl2IyugaeJsCcqNYcTJGAf9mmDhy3sooDb9Kb7XtAvD277sj8AV-PslbWJS1FttX4jyTf0ac36yz4F537ix3ZRXEHsGlOKa49PerEKMyQxSreSjo4fN_HKiiAiZ2MykmdmQOtCadfq0kBV57JIOjaKN4xGF8nWCpqPwgwzIB0_C9PgFZAk5OOpB1tPLFBPFRR2icQlgDE_sUEPiFTCwggrYX18ionaU-_peWd0C9-gP62cxm2429DvAQepeMeoAaJ8cD_lyuySotuJGySgM0hzZoR6MIVeWbvhBQzUedfE7HyTdTSNKYJ_jyB5Ejt3zRv_IDUNvriE1MHuGCnlIGiK7D2KPP4Eh8psrfT9W6n4pF9S8qHY5uGGXUtcFvJMqAsXeKyEv1PYWIihXnlToU6qa4kSs8rHebslzv1pty1R_2cp9v2l1dy0KKshV7bPObbbHJ13XZqG250geRizLfiM16VwpRZuKmUHWpNnneruu2UGyT4yC1yWjyMue7lQ4h4WFd7MT6ZmVkjSZMl6UQ1J1C0K3pDxTO69QFtsmNDjG8JIg6mul-pfjyxMrb5a6aF5UfWHmCr2Py2iXqrz0rzpOd_a8b5NqjparQtvvJEah2Sx1XyZtDH-NIs8HEmYlzp2Of6qxxAxNnIr388dG779hEJs6TBIGJ86LC5SD-CQAA__9EmazJ">