[llvm-dev] SSE return w/ elf64 ABI
Tyler Hardin via llvm-dev
llvm-dev at lists.llvm.org
Sat Aug 22 16:43:44 PDT 2015
Hi,
LLVM made a change a few months ago and starting erroring out when a float
is returned in x64 and SSE is disabled. This makes sense, really, since
it's specified by the ABI that the return value must be put in a register
you were told to disable, but it's breaking soft floats in Rust on x64. It
seems there are two options: LLVM could break the ABI spec and have working
soft floats on 64bit or Rust could offer a configuration option to remove
float support from its "libcore" (the freestanding stdlib).
What do you guys think about fixing it on your end?
Relevant links:
Clang error w/ same message: https://llvm.org/bugs/show_bug.cgi?id=23203
Report of rust bug: https://github.com/rust-lang/rust/issues/26449
Discussion on why Rust doesn't want to fix (a refused patch to libcore):
https://github.com/rust-lang/rust/pull/26749
The error is coming from one of these files:
lib/Target/X86/X86FastISel.cpp:3166: report_fatal_error("SSE register
return with SSE disabled");
lib/Target/X86/X86ISelLowering.cpp:2107: report_fatal_error("SSE
register return with SSE disabled");
lib/Target/X86/X86ISelLowering.cpp:2261: report_fatal_error("SSE
register return with SSE disabled");
test/CodeGen/X86/nosse-error2.ll:4:; NOSSE: {{SSE register return with SSE
disabled}}
test/CodeGen/X86/nosse-error1.ll:4:; NOSSE: {{SSE register return with SSE
disabled}}
Thanks for your time,
Tyler Hardin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150822/a70dc3e4/attachment.html>
More information about the llvm-dev
mailing list