[PATCH] D17327: [WebAssembly] Disable register stackification and coloring when not optimizing
Derek Schuff via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 17 09:05:53 PST 2016
dschuff updated this revision to Diff 48198.
dschuff marked 2 inline comments as done.
dschuff added a comment.
- Default to PIC and force large code model
http://reviews.llvm.org/D17327
Files:
lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
lib/Target/WebAssembly/WebAssemblyRegColoring.cpp
lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
Index: lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
===================================================================
--- lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -185,11 +185,13 @@
// Fails with: should be run after register allocation.
disablePass(&MachineCopyPropagationID);
- // Mark registers as representing wasm's expression stack.
- addPass(createWebAssemblyRegStackify());
+ 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());
+ // Run the register coloring pass to reduce the total number of registers.
+ addPass(createWebAssemblyRegColoring());
+ }
TargetPassConfig::addPostRegAlloc();
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<bool>
- 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 <rdar://problem/8007500>.)
Index: lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
===================================================================
--- lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
+++ lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp
@@ -40,6 +40,18 @@
return new WebAssemblyMCAsmInfo(TT);
}
+static MCCodeGenInfo *createMCCodeGenInfo(const Triple & /*TT*/,
+ Reloc::Model /*RM*/,
+ CodeModel::Model CM,
+ CodeGenOpt::Level OL) {
+ CodeModel::Model M = CM == CodeModel::Default ? CodeModel::Large : CM;
+ if (M != CodeModel::Large)
+ report_fatal_error("Non-large code models are not supported yet");
+ MCCodeGenInfo *CGI = new MCCodeGenInfo();
+ CGI->initMCCodeGenInfo(Reloc::PIC_, CM, OL);
+ return CGI;
+}
+
static MCInstrInfo *createMCInstrInfo() {
MCInstrInfo *X = new MCInstrInfo();
InitWebAssemblyMCInstrInfo(X);
@@ -99,6 +111,9 @@
// Register the MC instruction info.
TargetRegistry::RegisterMCInstrInfo(*T, createMCInstrInfo);
+ // Register the MC codegen info.
+ TargetRegistry::RegisterMCCodeGenInfo(*T, createMCCodeGenInfo);
+
// Register the MC register info.
TargetRegistry::RegisterMCRegInfo(*T, createMCRegisterInfo);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17327.48198.patch
Type: text/x-patch
Size: 3216 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160217/fcc3d90e/attachment.bin>
More information about the llvm-commits
mailing list