[X89] Ignore -mtune=generic to fix failures some users are seeing after D85384
authorCraig Topper <craig.topper@intel.com>
Wed, 19 Aug 2020 20:12:46 +0000 (13:12 -0700)
committerCraig Topper <craig.topper@intel.com>
Wed, 19 Aug 2020 20:17:57 +0000 (13:17 -0700)
Some code bases out there pass -mtune=generic to clang. This would have
been ignored prior to D85384. Now it results in an error
because "generic" isn't recognized by isValidCPUName.

And if we let it go through to the backend as a tune
setting it would get the tune flags closer to i386 rather
than a modern CPU.

I plan to change what tune=generic does in the backend in
a future patch. And allow this in the frontend.
But this should be a quick fix for the error some users
are seeing.

clang/lib/Driver/ToolChains/Clang.cpp

index 4f37590..2054069 100644 (file)
@@ -2081,8 +2081,13 @@ void Clang::AddX86TargetArgs(const ArgList &Args,
     if (Name == "native")
       Name = llvm::sys::getHostCPUName();
 
-    CmdArgs.push_back("-tune-cpu");
-    CmdArgs.push_back(Args.MakeArgString(Name));
+    // Ignore generic either from getHostCPUName or from command line.
+    // FIXME: We need to support this eventually but isValidCPUName and the
+    // backend aren't ready for it yet.
+    if (Name != "generic") {
+      CmdArgs.push_back("-tune-cpu");
+      CmdArgs.push_back(Args.MakeArgString(Name));
+    }
   }
 }