X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FTargetLibraryInfo.cpp;h=616ff9067300706adf65999f7b3854f21dc6c44b;hb=dea837d3c5179309642875dae6d2b20b5b4bd197;hp=f5ebc43eb2e98fa92fbe09183914394df90d1a16;hpb=8f0354c973feefc54f4d4ca138ee072e1986d9ad;p=oota-llvm.git diff --git a/lib/Target/TargetLibraryInfo.cpp b/lib/Target/TargetLibraryInfo.cpp index f5ebc43eb2e..616ff906730 100644 --- a/lib/Target/TargetLibraryInfo.cpp +++ b/lib/Target/TargetLibraryInfo.cpp @@ -190,6 +190,9 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "isdigit", "labs", "lchown", + "ldexp", + "ldexpf", + "ldexpl", "llabs", "log", "log10", @@ -375,8 +378,17 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, llvm_unreachable("TargetLibraryInfo function names must be sorted"); } #endif // !NDEBUG - - // memset_pattern16 is only available on iOS 3.0 and Mac OS/X 10.5 and later. + + // There are no library implementations of mempcy and memset for r600 and + // these can be difficult to lower in the backend. + if (T.getArch() == Triple::r600) { + TLI.setUnavailable(LibFunc::memcpy); + TLI.setUnavailable(LibFunc::memset); + TLI.setUnavailable(LibFunc::memset_pattern16); + return; + } + + // memset_pattern16 is only available on iOS 3.0 and Mac OS X 10.5 and later. if (T.isMacOSX()) { if (T.isMacOSXVersionLT(10, 5)) TLI.setUnavailable(LibFunc::memset_pattern16); @@ -414,7 +426,7 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, TLI.setUnavailable(LibFunc::fiprintf); } - if (T.getOS() == Triple::Win32) { + if (T.isOSWindows() && !T.isOSCygMing()) { // Win32 does not support long double TLI.setUnavailable(LibFunc::acosl); TLI.setUnavailable(LibFunc::asinl); @@ -432,6 +444,8 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, TLI.setUnavailable(LibFunc::fminl); TLI.setUnavailable(LibFunc::fmodl); TLI.setUnavailable(LibFunc::frexpl); + TLI.setUnavailable(LibFunc::ldexpf); + TLI.setUnavailable(LibFunc::ldexpl); TLI.setUnavailable(LibFunc::logl); TLI.setUnavailable(LibFunc::modfl); TLI.setUnavailable(LibFunc::powl);