<div dir="ltr"><div><div>Thanks Tim, I was not aware of that issue with clang. I could compile with:<br><br>clang --target=mips-linux-gnu --sysroot=/home/ronaldo/CodeSourcery/Sourcery_CodeBench_Lite_for_MIPS_GNU_Linux -static -O3 basicmath_small.c rad2deg.c cubic.c isqrt.c -c -emit-llvm<br>

<br></div>I already had the MIPS toolchain installed.<br><br></div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-27 19:28 GMT+02:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Ronaldo,<br>
<div class=""><br>
On 27 May 2014 18:13, Ronaldo Ferreira <<a href="mailto:ronaldorferreira@gmail.com">ronaldorferreira@gmail.com</a>> wrote:<br>
> clang -static -O3 basicmath_small.c rad2deg.c cubic.c isqrt.c -c -emit-llvm<br>
> llvm-link basicmath_small.bc rad2deg.bc cubic.bc isqrt.bc -o basicmath.bc<br>
> llc basicmath.bc -march=mipsel -relocation-model=static -o basicmath<br>
<br>
</div>My best guess is that the LLVM IR created on line 1 is actually for<br>
x86-64 (generated by a Clang targeting x86-64, having included x86-64<br>
headers and so on). When you override the output target on the third<br>
line, you would end up feeding the MIPS backend IR that it's not<br>
equipped to deal with. Clang's output *does* depend on what it's<br>
targeting.<br>
<br>
If so, you need to create a proper cross-development environment for<br>
MIPS (binutils, libc, headers, ...) and point clang at it in the first<br>
line (via -target and -sysroot at least, possibly other options too;<br>
getting the driver to work properly can be a tricky business. Use "-v"<br>
to get it to tell you more about what it's trying to do). Then the<br>
later lines should work fine (though you won't need the -march option<br>
for llc).<br>
<br>
Cheers.<br>
<br>
Tim.<br>
<br>
P.S. The backends probably shouldn't crash regardless, but the reality<br>
is that they're adapted to the kind of IR Clang produces when it knows<br>
it's targeting them and other configurations are much less<br>
well-tested. Since the alternative is successfully generating wrong<br>
code, it's not much of a priority for me at least.<br>
</blockquote></div><br></div>