[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