[WebAssembly] Avoid adding redundant EXPR_STACK uses.
authorDan Gohman <dan433584@gmail.com>
Mon, 14 Dec 2015 22:37:23 +0000 (22:37 +0000)
committerDan Gohman <dan433584@gmail.com>
Mon, 14 Dec 2015 22:37:23 +0000 (22:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255563 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/WebAssembly/WebAssemblyRegStackify.cpp

index d890310ac5013e5a10c09fce4bf21d84c3a9e8a8..0b04a6355a92854f3780c10b8c3e50395b63c821 100644 (file)
@@ -78,9 +78,10 @@ static void ImposeStackOrdering(MachineInstr *MI, MachineRegisterInfo &MRI) {
   ImposeStackInputOrdering(MI);
 
   // Also read the opaque EXPR_STACK register.
-  MI->addOperand(MachineOperand::CreateReg(WebAssembly::EXPR_STACK,
-                                           /*isDef=*/false,
-                                           /*isImp=*/true));
+  if (!MI->readsRegister(WebAssembly::EXPR_STACK))
+    MI->addOperand(MachineOperand::CreateReg(WebAssembly::EXPR_STACK,
+                                             /*isDef=*/false,
+                                             /*isImp=*/true));
 
   // Also, mark any inputs to this instruction as being consumed by an
   // instruction on the expression stack.