<html><body class="ApplePlainTextBody" style="word-wrap:
break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;
">On May 6, 2008, at 09:46, james woodyatt
wrote:<br><blockquote
type="cite"><br></blockquote><blockquote
type="cite">My build of LLVM-GCC from top-of-trunk sources is
failing with the<br></blockquote><blockquote
type="cite">assertion in ARMISelTargetLowering at line 667, in
LowerRET, where it<br></blockquote><blockquote
type="cite">says "Do not know how to return this many
arguments!" This happens<br></blockquote><blockquote
type="cite">when the cross-compiler attempts to build _muldc3 for
libgcc2.<br></blockquote><br>The good news (for me) is
that...<br><br><span class="Apple-tab-span"
style="white-space:pre"> </span>#define ARM_ABI_DEFAULT
ARM_ABI_AAPCS<br><br>...makes this problem go
away.<br><br>Why? Because, without it, the LLVM-GCC code generator
seems to want to bitcast the CDType complex number structure into an i128 return
value, and the ARM target in LLVM doesn't like that at all. It turns out
that neither do most of the other targets. The only target that doesn't
seem to complain about this is the x86-64 target. Too bad I don't have
x86-64 hardware to play with...<br><br>In any case, it looks like
either A) the ARM backend, as well as the MIPS and PowerPC backends, could use
to be improved to support lowering i128 return values in the ISD::RET nodes into
instructions that makes sense, or B) the LLVM-GCC code generator ought not to be
generating returns for data types that the underlying target architecture
doesn't like. I'd try to tackle the former approach, but I'd
probably make a hash of it because I'm a total noob. I'm not sure I
think the latter approach is the right choice. So, I'm just going to drop
this problem and move on to the next interesting
thing.<br><br>There's nothing about any of this in
$LLVM/lib/Target/ARM/README.txt, and that made me a little sad. I would have
liked to see something in there about it, and I would write something there
myself, except I can't. This kvetch here will have to
do.<br><br><blockquote type="cite">If you've
read this far, then thank you for your
attention.<br></blockquote><br>I now have a toolchain building
for my crazy new ARM target that doesn't really exist yet. If you have
questions about anything above, please ask on the
list.<br><br><br>—<br>j h woodyatt
<jhw@conjury.org><br>http://jhw.vox.com/<br><br></body></html>