aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-06-05 22:05:48 +0000
committerDevang Patel <dpatel@apple.com>2009-06-05 22:05:48 +0000
commitacebb397fa5d63835a0de9cee144987057ec1333 (patch)
tree8de93c8e9c80f14b60424545e85f8990c550378a
parent496b5a894c5ec5425de53909f5aac3fb4771a2ec (diff)
Set function Attribute::NoImplicitFloat appropriately.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72961 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Frontend/CompileOptions.h2
-rw-r--r--lib/CodeGen/CGCall.cpp2
-rw-r--r--lib/Driver/Tools.cpp2
-rw-r--r--test/Driver/flags.c6
-rw-r--r--tools/clang-cc/clang-cc.cpp6
5 files changed, 14 insertions, 4 deletions
diff --git a/include/clang/Frontend/CompileOptions.h b/include/clang/Frontend/CompileOptions.h
index a69f8f8a40..75dec00f74 100644
--- a/include/clang/Frontend/CompileOptions.h
+++ b/include/clang/Frontend/CompileOptions.h
@@ -42,6 +42,7 @@ public:
unsigned TimePasses : 1; /// Set when -ftime-report is enabled.
unsigned NoCommon : 1; /// Set when -fno-common or C++ is enabled.
unsigned DisableRedZone : 1; /// Set when -mno-red-zone is enabled.
+ unsigned NoImplicitFloat : 1; /// Set when -mno-implicit-float is enabled.
/// Inlining - The kind of inlining to perform.
InliningMethod Inlining;
@@ -65,6 +66,7 @@ public:
NoCommon = 0;
Inlining = NoInlining;
DisableRedZone = 0;
+ NoImplicitFloat = 0;
}
};
diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp
index 248619fc2d..55601f38db 100644
--- a/lib/CodeGen/CGCall.cpp
+++ b/lib/CodeGen/CGCall.cpp
@@ -1755,6 +1755,8 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
if (CompileOpts.DisableRedZone)
FuncAttrs |= llvm::Attribute::NoRedZone;
+ if (CompileOpts.NoImplicitFloat)
+ FuncAttrs |= llvm::Attribute::NoImplicitFloat;
QualType RetTy = FI.getReturnType();
unsigned Index = 1;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index f3cfc653eb..6b082c8bdf 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -329,7 +329,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasFlag(options::OPT_msoft_float,
options::OPT_mno_soft_float,
false))
- CmdArgs.push_back("--soft-float");
+ CmdArgs.push_back("--no-implicit-float");
// FIXME: Handle -mtune=.
(void) Args.hasArg(options::OPT_mtune_EQ);
diff --git a/test/Driver/flags.c b/test/Driver/flags.c
index 53f3995f39..7c448fa6df 100644
--- a/test/Driver/flags.c
+++ b/test/Driver/flags.c
@@ -1,9 +1,9 @@
// RUN: clang -ccc-host-triple i386-apple-darwin9 -### -S -msoft-float %s 2> %t.log &&
-// RUN: grep '"--soft-float"' %t.log &&
+// RUN: grep '"--no-implicit-float"' %t.log &&
// RUN: clang -ccc-host-triple i386-apple-darwin9 -### -S -msoft-float -mno-soft-float %s 2> %t.log &&
-// RUN: grep '"--soft-float"' %t.log | count 0 &&
+// RUN: grep '"--no-implicit-float"' %t.log | count 0 &&
// RUN: clang -ccc-host-triple i386-apple-darwin9 -### -S -mno-soft-float %s -msoft-float 2> %t.log &&
-// RUN: grep '"--soft-float"' %t.log
+// RUN: grep '"--no-implicit-float"' %t.log
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index ed93fdf366..f38c6bde41 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -1406,6 +1406,11 @@ DisableRedZone("disable-red-zone",
llvm::cl::desc("Do not emit code that uses the red zone."),
llvm::cl::init(false));
+static llvm::cl::opt<bool>
+NoImplicitFloat("no-implicit-float",
+ llvm::cl::desc("Don't generate implicit floating point instructions (x86-only)"),
+ llvm::cl::init(false));
+
/// ComputeTargetFeatures - Recompute the target feature list to only
/// be the list of things that are enabled, based on the target cpu
/// and feature list.
@@ -1484,6 +1489,7 @@ static void InitializeCompileOptions(CompileOptions &Opts,
Opts.TimePasses = TimeReport;
Opts.DisableRedZone = DisableRedZone;
+ Opts.NoImplicitFloat = NoImplicitFloat;
}
//===----------------------------------------------------------------------===//