OSDN Git Service

[WebAssembly] Eliminate an ad-hoc command-line argument.
authorDan Gohman <dan433584@gmail.com>
Sat, 3 Dec 2016 23:00:12 +0000 (23:00 +0000)
committerDan Gohman <dan433584@gmail.com>
Sat, 3 Dec 2016 23:00:12 +0000 (23:00 +0000)
Use the target triple to determine whether to run the explicit-locals
pass, rather than using a separate command-line argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288602 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/WebAssembly/WebAssemblyExplicitLocals.cpp
lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp

index 56b0f4f..04ede7f 100644 (file)
@@ -146,6 +146,11 @@ bool WebAssemblyExplicitLocals::runOnMachineFunction(MachineFunction &MF) {
                   "********** Function: "
                << MF.getName() << '\n');
 
+  // Disable this pass if we aren't doing direct wasm object emission.
+  if (MF.getSubtarget<WebAssemblySubtarget>()
+        .getTargetTriple().isOSBinFormatELF())
+    return false;
+
   bool Changed = false;
   MachineRegisterInfo &MRI = MF.getRegInfo();
   WebAssemblyFunctionInfo &MFI = *MF.getInfo<WebAssemblyFunctionInfo>();
index f0f74e7..b61bc0a 100644 (file)
@@ -41,11 +41,6 @@ static cl::opt<bool> EnableEmSjLj(
     cl::desc("WebAssembly Emscripten-style setjmp/longjmp handling"),
     cl::init(false));
 
-static cl::opt<bool> ExplicitLocals(
-    "wasm-explicit-locals",
-    cl::desc("WebAssembly with explicit get_local/set_local"),
-    cl::init(false));
-
 extern "C" void LLVMInitializeWebAssemblyTarget() {
   // Register the target.
   RegisterTargetMachine<WebAssemblyTargetMachine> X(
@@ -262,8 +257,7 @@ void WebAssemblyPassConfig::addPreEmitPass() {
   }
 
   // Insert explicit get_local and set_local operators.
-  if (ExplicitLocals)
-    addPass(createWebAssemblyExplicitLocals());
+  addPass(createWebAssemblyExplicitLocals());
 
   // Eliminate multiple-entry loops.
   addPass(createWebAssemblyFixIrreducibleControlFlow());