about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorJyun-Yan You <jyyou@cs.nctu.edu.tw>2013-09-30 13:20:52 +0800
committerJyun-Yan You <jyyou@cs.nctu.edu.tw>2013-10-01 11:19:18 +0800
commit350b5438cd0b2a9ed33c0cdb1b36d7e4cbe1ab2b (patch)
treefa9aef4b025b563f47edfffad6a05cbbf961acb1 /src/rustllvm/PassWrapper.cpp
parent80b6056f5d4ae6b527b36c502cc074c2518a3f7d (diff)
downloadrust-350b5438cd0b2a9ed33c0cdb1b36d7e4cbe1ab2b.tar.gz
rust-350b5438cd0b2a9ed33c0cdb1b36d7e4cbe1ab2b.zip
add -Z soft-float option
This change adds -Z soft-float option for generating
software floating point library calls.
It also implies using soft float ABI, that is the same as llc.

It is useful for targets that have no FPU.
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
-rw-r--r--src/rustllvm/PassWrapper.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
index 615c2cc61cb..8d0b447fa4a 100644
--- a/src/rustllvm/PassWrapper.cpp
+++ b/src/rustllvm/PassWrapper.cpp
@@ -67,7 +67,8 @@ LLVMRustCreateTargetMachine(const char *triple,
                             CodeModel::Model CM,
                             Reloc::Model RM,
                             CodeGenOpt::Level OptLevel,
-                            bool EnableSegmentedStacks) {
+                            bool EnableSegmentedStacks,
+                            bool UseSoftFloat) {
     std::string Error;
     Triple Trip(Triple::normalize(triple));
     const llvm::Target *TheTarget = TargetRegistry::lookupTarget(Trip.getTriple(),
@@ -84,6 +85,10 @@ LLVMRustCreateTargetMachine(const char *triple,
     Options.FloatABIType =
          (Trip.getEnvironment() == Triple::GNUEABIHF) ? FloatABI::Hard :
                                                         FloatABI::Default;
+    Options.UseSoftFloat = UseSoftFloat;
+    if (UseSoftFloat) {
+        Options.FloatABIType = FloatABI::Soft;
+    }
 
     TargetMachine *TM = TheTarget->createTargetMachine(Trip.getTriple(),
                                                        cpu,