diff options
author | Stephen Hines <srhines@google.com> | 2014-09-04 01:57:32 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-04 01:57:32 +0000 |
commit | 4f20f86320d66c101111a6c302efca765aff5113 (patch) | |
tree | e1c29b7372d861f4cabc1a42887081ea481661ac /tools | |
parent | 8cb6cc6baed0e2739b1dc23a62626484594b3069 (diff) | |
parent | 2d112c0241dfa3093c00912845b3a5f7f1eb2d67 (diff) | |
download | libbcc-4f20f86320d66c101111a6c302efca765aff5113.tar.gz |
am 2d112c02: Merge "Set x86 SSE features explicitly in bcc"
* commit '2d112c0241dfa3093c00912845b3a5f7f1eb2d67':
Set x86 SSE features explicitly in bcc
Diffstat (limited to 'tools')
-rw-r--r-- | tools/bcc/Main.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/bcc/Main.cpp b/tools/bcc/Main.cpp index 959f9e6..6b9b13d 100644 --- a/tools/bcc/Main.cpp +++ b/tools/bcc/Main.cpp @@ -125,6 +125,30 @@ bool ConfigCompiler(RSCompilerDriver &pRSCD) { return false; } + // llvm3.5 has removed the auto-detect feature for x86 subtarget, + // so set features explicitly in bcc. + if ((config->getTriple().find("i686") != std::string::npos) || + (config->getTriple().find("x86_64") != std::string::npos)) { + std::vector<std::string> fv; + +#if defined(__SSE3__) + fv.push_back("+sse3"); +#endif +#if defined(__SSSE3__) + fv.push_back("+ssse3"); +#endif +#if defined(__SSE4_1__) + fv.push_back("+sse4.1"); +#endif +#if defined(__SSE4_2__) + fv.push_back("+sse4.2"); +#endif + + if (fv.size()) { + config->setFeatureString(fv); + } + } + switch (OptOptLevel) { case '0': config->setOptimizationLevel(llvm::CodeGenOpt::None); break; case '1': config->setOptimizationLevel(llvm::CodeGenOpt::Less); break; |