diff options
author | Pirama Arumuga Nainar <pirama@google.com> | 2018-08-22 17:43:05 +0000 |
---|---|---|
committer | Pirama Arumuga Nainar <pirama@google.com> | 2018-08-22 17:43:05 +0000 |
commit | 569dd503dbf1d05bca83982a1edee26fe1507bda (patch) | |
tree | 888ba379982ad0977540218eb3dfe25ce443725c | |
parent | f77dc2a8d1d7bdd433d04ba2386d860f31a4f358 (diff) | |
download | bcm5719-llvm-569dd503dbf1d05bca83982a1edee26fe1507bda.tar.gz bcm5719-llvm-569dd503dbf1d05bca83982a1edee26fe1507bda.zip |
[Android] Default to -fno-math-errno
Summary: Android's libm does not set errno.
Reviewers: srhines, enh
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D51068
llvm-svn: 340424
-rw-r--r-- | clang/lib/Driver/ToolChains/Linux.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/Linux.h | 1 | ||||
-rw-r--r-- | clang/test/Driver/fast-math.c | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index f8f36239180..4e4317076fd 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -907,6 +907,12 @@ bool Linux::isPIEDefault() const { getTriple().isMusl() || getSanitizerArgs().requiresPIE(); } +bool Linux::IsMathErrnoDefault() const { + if (getTriple().isAndroid()) + return false; + return Generic_ELF::IsMathErrnoDefault(); +} + SanitizerMask Linux::getSupportedSanitizers() const { const bool IsX86 = getTriple().getArch() == llvm::Triple::x86; const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64; diff --git a/clang/lib/Driver/ToolChains/Linux.h b/clang/lib/Driver/ToolChains/Linux.h index 22dbbecf6b9..2f0c36190f2 100644 --- a/clang/lib/Driver/ToolChains/Linux.h +++ b/clang/lib/Driver/ToolChains/Linux.h @@ -38,6 +38,7 @@ public: void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; bool isPIEDefault() const override; + bool IsMathErrnoDefault() const override; SanitizerMask getSupportedSanitizers() const override; void addProfileRTLibs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const override; diff --git a/clang/test/Driver/fast-math.c b/clang/test/Driver/fast-math.c index 57e5d2c7157..470e5a8104b 100644 --- a/clang/test/Driver/fast-math.c +++ b/clang/test/Driver/fast-math.c @@ -95,6 +95,8 @@ // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s // RUN: %clang -### -target x86_64-fuchsia -c %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s +// RUN: %clang -### -target x86_64-linux-android -c %s 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NO-MATH-ERRNO %s // // Check that -ffast-math disables -fmath-errno, and -fno-fast-math merely // preserves the target default. Also check various flag set operations between |