<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, 7 Sep 2018 at 16:59, Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, 7 Sep 2018 at 07:38, Dan Ravensloft <<a href="mailto:dan.ravensloft@gmail.com" target="_blank">dan.ravensloft@gmail.com</a>> wrote:<br>
> I just tried this, but the compiler still crashes with the same error. Maybe our experiments were different.<br>
<br>
Strange. I only tested it on a simple reproducer rather than newlib:<br>
<br>
void foo(float *in, long long *out) {<br>
       *out = *in;<br>
}<br>
$ clang -target mips64el-img-linux -mcpu=mips3 -S -o- -Os tmp.c<br>
[...]<br>
<br>
Is it possible you were hitting a different error with roughly similar output?<br></blockquote><div><br></div><div>Both your simple reproducer and newlib give the same crash for me (Unexpected illegal type), though my build of LLVM doesn't list any direct symbols in the backtrace despite compiling in Debug mode. (maybe I missed a cmake option?)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> lowerFP_TO_SINT_STORE is only ever called by lowerFP_TO_SINT, so I'm just passing single-floatness (we need a better name for that) as an argument to lowerFP_TO_SINT_STORE at the moment.<br>
<br>
Are you sure? I see it being called by lowerSTORE.<br>
</blockquote><div><br></div><div>You are correct, my apologies.<br></div><div><br></div><div>So we're on the same metaphorical page, I've attached my git diffs; the build target I'm using is mips64el-scei-ps2. ps2-clang.diff applies to clang, while ps2-llvm applies to llvm, but that should be obvious.<br></div></div></div>