<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>