summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorPirama Arumuga Nainar <pirama@google.com>2018-08-22 17:43:05 +0000
committerPirama Arumuga Nainar <pirama@google.com>2018-08-22 17:43:05 +0000
commit569dd503dbf1d05bca83982a1edee26fe1507bda (patch)
tree888ba379982ad0977540218eb3dfe25ce443725c /clang
parentf77dc2a8d1d7bdd433d04ba2386d860f31a4f358 (diff)
downloadbcm5719-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
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Driver/ToolChains/Linux.cpp6
-rw-r--r--clang/lib/Driver/ToolChains/Linux.h1
-rw-r--r--clang/test/Driver/fast-math.c2
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
OpenPOWER on IntegriCloud