Set x86 SSE features explicitly in bcc
Change-Id: Ia31393f08703f9474fee31fc03de7888fca78413
Signed-off-by: Yong Chen <yong.a.chen@intel.com>
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 @@
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;