diff options
author | Devang Patel <dpatel@apple.com> | 2009-06-05 22:05:48 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2009-06-05 22:05:48 +0000 |
commit | acebb397fa5d63835a0de9cee144987057ec1333 (patch) | |
tree | 8de93c8e9c80f14b60424545e85f8990c550378a | |
parent | 496b5a894c5ec5425de53909f5aac3fb4771a2ec (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.h | 2 | ||||
-rw-r--r-- | lib/CodeGen/CGCall.cpp | 2 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 2 | ||||
-rw-r--r-- | test/Driver/flags.c | 6 | ||||
-rw-r--r-- | tools/clang-cc/clang-cc.cpp | 6 |
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; } //===----------------------------------------------------------------------===// |