diff options
author | Derek Schuff <dschuff@google.com> | 2015-12-16 23:21:30 +0000 |
---|---|---|
committer | Derek Schuff <dschuff@google.com> | 2015-12-16 23:21:30 +0000 |
commit | 8bb5f2927a36d1ec58b5fa090095ed0abfa5d1c6 (patch) | |
tree | e483943c93115cc76b03307adac8e5b4312d3d37 /llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | |
parent | 433049f87b711db1adedac3fc35f6f894ede79ed (diff) | |
download | bcm5719-llvm-8bb5f2927a36d1ec58b5fa090095ed0abfa5d1c6.tar.gz bcm5719-llvm-8bb5f2927a36d1ec58b5fa090095ed0abfa5d1c6.zip |
[WebAssembly] Implement eliminateCallFramePseudo
Summary:
Implement eliminateCallFramePsuedo to handle ADJCALLSTACKUP/DOWN
pseudo-instructions. Add a test calling a vararg function which causes non-0
adjustments. This revealed an issue with RegisterCoalescer wherein it
eliminates a COPY from SP32 to a vreg but failes to update the live ranges
of EXPR_STACK, causing a machineinstr verifier failure (so this test
is commented out).
Also add a dynamic alloca test, which causes a callseq_end dag node with
a 0 (instead of undef) second argument to be generated. We currently fail to
select that, so adjust the ADJCALLSTACKUP tablegen code to handle it.
Differential Revision: http://reviews.llvm.org/D15587
llvm-svn: 255844
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp index dcc393db6ea..c33c21fe685 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp @@ -169,6 +169,9 @@ void WebAssemblyPassConfig::addPreRegAlloc() { // Mark registers as representing wasm's expression stack. addPass(createWebAssemblyRegStackify()); + // The register coalescing pass has a bad interaction with COPY MIs which have + // EXPR_STACK as an extra operand + //disablePass(&RegisterCoalescerID); } void WebAssemblyPassConfig::addPostRegAlloc() { |