From a94bd7a780a437f52913841d50e2d5a59417bbe1 Mon Sep 17 00:00:00 2001 From: Vince Harron Date: Thu, 7 May 2015 00:05:26 +0000 Subject: [PATCH] Added support for building against Android API-9 SDK Created an abstraction for log2, llvm::Log2 in Support/MathExtras.h Hid Android problems inside of it Differential Revision: http://reviews.llvm.org/D9467 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236680 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/MathExtras.h | 13 +++++++++++++ lib/Analysis/ConstantFolding.cpp | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/llvm/Support/MathExtras.h b/include/llvm/Support/MathExtras.h index 7edc2ac2e7a..340dc934934 100644 --- a/include/llvm/Support/MathExtras.h +++ b/include/llvm/Support/MathExtras.h @@ -24,6 +24,10 @@ #include #endif +#ifdef __ANDROID_NDK__ +#include +#endif + namespace llvm { /// \brief The behavior an operation has on an input of 0. enum ZeroBehavior { @@ -449,6 +453,15 @@ inline unsigned countPopulation(T Value) { return detail::PopulationCounter::count(Value); } +/// Log2 - This function returns the log base 2 of the specified value +inline double Log2(double Value) { +#if defined(__ANDROID_API__) && __ANDROID_API__ < 18 + return (double)__builtin_log2l(Value); +#else + return log2(Value); +#endif +} + /// Log2_32 - This function returns the floor log base 2 of the specified value, /// -1 if the value is zero. (32 bit edition.) /// Ex. Log2_32(32) == 5, Log2_32(1) == 0, Log2_32(0) == -1, Log2_32(6) == 2 diff --git a/lib/Analysis/ConstantFolding.cpp b/lib/Analysis/ConstantFolding.cpp index a85e8136de5..6a37f951942 100644 --- a/lib/Analysis/ConstantFolding.cpp +++ b/lib/Analysis/ConstantFolding.cpp @@ -1438,7 +1438,7 @@ static Constant *ConstantFoldScalarCall(StringRef Name, unsigned IntrinsicID, case Intrinsic::fabs: return ConstantFoldFP(fabs, V, Ty); case Intrinsic::log2: - return ConstantFoldFP(log2, V, Ty); + return ConstantFoldFP(Log2, V, Ty); case Intrinsic::log: return ConstantFoldFP(log, V, Ty); case Intrinsic::log10: -- 2.34.1