Index: lib/Target/WebAssembly/WebAssemblyRegColoring.cpp =================================================================== --- lib/Target/WebAssembly/WebAssemblyRegColoring.cpp +++ lib/Target/WebAssembly/WebAssemblyRegColoring.cpp @@ -29,10 +29,6 @@ #define DEBUG_TYPE "wasm-reg-coloring" -static cl::opt - DisableRegColoring("disable-wasm-reg-coloring", cl::Hidden, cl::init(false), - cl::desc("Disable WebAssembly register coloring")); - namespace { class WebAssemblyRegColoring final : public MachineFunctionPass { public: @@ -80,9 +76,6 @@ << "********** Function: " << MF.getName() << '\n'; }); - if (DisableRegColoring) - return false; - // If there are calls to setjmp or sigsetjmp, don't perform coloring. Virtual // registers could be modified before the longjmp is executed, resulting in // the wrong value being used afterwards. (See .) Index: lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp =================================================================== --- lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -185,11 +185,14 @@ // Fails with: should be run after register allocation. disablePass(&MachineCopyPropagationID); - // Mark registers as representing wasm's expression stack. - addPass(createWebAssemblyRegStackify()); - // Run the register coloring pass to reduce the total number of registers. - addPass(createWebAssemblyRegColoring()); + if (getOptLevel() != CodeGenOpt::None) { + // Mark registers as representing wasm's expression stack. + addPass(createWebAssemblyRegStackify()); + + // Run the register coloring pass to reduce the total number of registers. + addPass(createWebAssemblyRegColoring()); + } TargetPassConfig::addPostRegAlloc();