[llvm] r261702 - Revert "[WebAssembly] Stackify code emitted by eliminateFrameIndex"

Derek Schuff via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 23 14:13:21 PST 2016


Author: dschuff
Date: Tue Feb 23 16:13:21 2016
New Revision: 261702

URL: http://llvm.org/viewvc/llvm-project?rev=261702&view=rev
Log:
Revert "[WebAssembly] Stackify code emitted by eliminateFrameIndex"

This reverts r261685 due to wasm test breakage.

Modified:
    llvm/trunk/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
    llvm/trunk/test/CodeGen/WebAssembly/byval.ll
    llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll
    llvm/trunk/test/CodeGen/WebAssembly/userstack.ll

Modified: llvm/trunk/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp?rev=261702&r1=261701&r2=261702&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/WebAssemblyRegisterInfo.cpp Tue Feb 23 16:13:21 2016
@@ -84,18 +84,14 @@ void WebAssemblyRegisterInfo::eliminateF
 
     unsigned FIRegOperand = WebAssembly::SP32;
     if (FrameOffset) {
-      auto *WFI = MF.getInfo<WebAssemblyFunctionInfo>();
-      unsigned OffsetOp = MRI.createVirtualRegister(&WebAssembly::I32RegClass);
+      FIRegOperand = MRI.createVirtualRegister(&WebAssembly::I32RegClass);
       BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(WebAssembly::CONST_I32),
-              OffsetOp)
+              FIRegOperand)
           .addImm(FrameOffset);
-      WFI->stackifyVReg(OffsetOp);
-      FIRegOperand = MRI.createVirtualRegister(&WebAssembly::I32RegClass);
       BuildMI(MBB, MI, MI.getDebugLoc(), TII->get(WebAssembly::ADD_I32),
               FIRegOperand)
           .addReg(WebAssembly::SP32)
-          .addReg(OffsetOp);
-      WFI->stackifyVReg(FIRegOperand);
+          .addReg(FIRegOperand);
     }
     MI.getOperand(FIOperandNum).ChangeToRegister(FIRegOperand, /*IsDef=*/false);
   }

Modified: llvm/trunk/test/CodeGen/WebAssembly/byval.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/WebAssembly/byval.ll?rev=261702&r1=261701&r2=261702&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/byval.ll (original)
+++ llvm/trunk/test/CodeGen/WebAssembly/byval.ll Tue Feb 23 16:13:21 2016
@@ -35,9 +35,9 @@ define void @byval_arg(%SmallStruct* %pt
  ; CHECK-NEXT: i32.load $push[[L4:.+]]=, 0($0)
  ; CHECK-NEXT: i32.store {{.*}}=, 12([[SP]]), $pop[[L4]]
  ; Pass a pointer to the stack slot to the function
- ; CHECK-NEXT: i32.const $push[[L5:.+]]=, 12
- ; CHECK-NEXT: i32.add $push[[ARG:.+]]=, [[SP]], $pop[[L5]]
- ; CHECK-NEXT: call ext_byval_func at FUNCTION, $pop[[ARG]]
+ ; CHECK-NEXT: i32.const [[L5:.+]]=, 12
+ ; CHECK-NEXT: i32.add [[ARG:.+]]=, [[SP]], [[L5]]
+ ; CHECK-NEXT: call ext_byval_func at FUNCTION, [[L5]]
  call void @ext_byval_func(%SmallStruct* byval %ptr)
  ; Restore the stack
  ; CHECK-NEXT: i32.const $push[[L6:.+]]=, 16
@@ -58,9 +58,9 @@ define void @byval_arg_align8(%SmallStru
  ; CHECK: i32.load $push[[L4:.+]]=, 0($0):p2align=3
  ; CHECK-NEXT: i32.store {{.*}}=, 8([[SP]]):p2align=3, $pop[[L4]]
  ; Pass a pointer to the stack slot to the function
- ; CHECK-NEXT: i32.const $push[[L5:.+]]=, 8
- ; CHECK-NEXT: i32.add $push[[ARG:.+]]=, [[SP]], $pop[[L5]]
- ; CHECK-NEXT: call ext_byval_func_align8 at FUNCTION, $pop[[ARG]]
+ ; CHECK-NEXT: i32.const [[L5:.+]]=, 8
+ ; CHECK-NEXT: i32.add [[ARG:.+]]=, [[SP]], [[L5]]
+ ; CHECK-NEXT: call ext_byval_func_align8 at FUNCTION, [[L5]]
  call void @ext_byval_func_align8(%SmallStruct* byval align 8 %ptr)
  ret void
 }

Modified: llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll?rev=261702&r1=261701&r2=261702&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll (original)
+++ llvm/trunk/test/CodeGen/WebAssembly/mem-intrinsics.ll Tue Feb 23 16:13:21 2016
@@ -61,8 +61,8 @@ define void @set_no(i8* %dst, i8 %src, i
 
 
 ; CHECK-LABEL: frame_index:
-; CHECK: i32.call $discard=, memset at FUNCTION, $pop11, $pop1, $pop0{{$}}
-; CHECK: i32.call $discard=, memset at FUNCTION, $0, $pop3, $pop2{{$}}
+; CHECK: i32.call $discard=, memset at FUNCTION, $0, $pop1, $pop0{{$}}
+; CHECK: i32.call $discard=, memset at FUNCTION, $1, $pop3, $pop2{{$}}
 ; CHECK: return{{$}}
 define void @frame_index() {
 entry:

Modified: llvm/trunk/test/CodeGen/WebAssembly/userstack.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/WebAssembly/userstack.ll?rev=261702&r1=261701&r2=261702&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/WebAssembly/userstack.ll (original)
+++ llvm/trunk/test/CodeGen/WebAssembly/userstack.ll Tue Feb 23 16:13:21 2016
@@ -49,7 +49,7 @@ define void @alloca3264() {
 }
 
 ; CHECK-LABEL: allocarray:
-; CHECK: .local i32{{$}}
+; CHECK: .local i32, i32{{$}}
 define void @allocarray() {
  ; CHECK: i32.const $push[[L1:.+]]=, __stack_pointer
  ; CHECK-NEXT: i32.load $push[[L2:.+]]=, 0($pop[[L1]])
@@ -60,9 +60,9 @@ define void @allocarray() {
  %r = alloca [33 x i32]
 
  ; CHECK-NEXT: i32.const $push[[L4:.+]]=, 12
- ; CHECK-NEXT: i32.const $push[[L5:.+]]=, 12
- ; CHECK-NEXT: i32.add $push[[L7:.+]]=, [[SP]], $pop[[L5]]
- ; CHECK-NEXT: i32.add $push[[L6:.+]]=, $pop[[L7]], $pop[[L4]]
+ ; CHECK-NEXT: i32.const [[L5:.+]]=, 12
+ ; CHECK-NEXT: i32.add [[L5]]=, [[SP]], [[L5]]
+ ; CHECK-NEXT: i32.add $push[[L6:.+]]=, [[L5]], $pop[[L4]]
  ; CHECK-NEXT: i32.const $push[[L9:.+]]=, 1{{$}}
  ; CHECK-NEXT: i32.store $push[[L10:.+]]=, 12([[SP]]), $pop[[L9]]{{$}}
  ; CHECK-NEXT: i32.store $discard=, 0($pop3), $pop[[L10]]{{$}}
@@ -86,18 +86,18 @@ define void @non_mem_use(i8** %addr) {
  %r = alloca i64
  %r2 = alloca i64
  ; %r is at SP+8
- ; CHECK: i32.const $push[[OFF:.+]]=, 8
- ; CHECK-NEXT: i32.add $push[[ARG1:.+]]=, [[SP]], $pop[[OFF]]
- ; CHECK-NEXT: call ext_func at FUNCTION, $pop[[ARG1]]
+ ; CHECK: i32.const [[OFF:.+]]=, 8
+ ; CHECK-NEXT: i32.add [[ARG1:.+]]=, [[SP]], [[OFF]]
+ ; CHECK-NEXT: call ext_func at FUNCTION, [[ARG1]]
  call void @ext_func(i64* %r)
  ; %r2 is at SP+0, no add needed
  ; CHECK-NEXT: call ext_func at FUNCTION, [[SP]]
  call void @ext_func(i64* %r2)
  ; Use as a value, but in a store
  ; %buf is at SP+16
- ; CHECK: i32.const $push[[OFF:.+]]=, 16
- ; CHECK-NEXT: i32.add $push[[VAL:.+]]=, [[SP]], $pop[[OFF]]
- ; CHECK-NEXT: i32.store {{.*}}=, 0($0), $pop[[VAL]]
+ ; CHECK: i32.const [[OFF:.+]]=, 16
+ ; CHECK-NEXT: i32.add [[VAL:.+]]=, [[SP]], [[OFF]]
+ ; CHECK-NEXT: i32.store {{.*}}=, 0($0), [[VAL]]
  %gep = getelementptr inbounds [27 x i8], [27 x i8]* %buf, i32 0, i32 0
  store i8* %gep, i8** %addr
  ret void
@@ -198,9 +198,9 @@ entry:
  ; CHECK: i32.const $push[[L1:.+]]=, 16
  ; CHECK-NEXT: i32.sub [[SP:.+]]=, {{.+}}, $pop[[L1]]
  %addr = alloca i32
- ; CHECK: i32.const $push[[OFF:.+]]=, 12
- ; CHECK-NEXT: i32.add $push[[ADDR:.+]]=, [[SP]], $pop[[OFF]]
- ; CHECK-NEXT: copy_local [[COPY:.+]]=, $pop[[ADDR]]
+ ; CHECK: i32.const [[OFF:.+]]=, 12
+ ; CHECK-NEXT: i32.add [[ADDR:.+]]=, [[SP]], [[OFF]]
+ ; CHECK-NEXT: copy_local [[COPY:.+]]=, [[ADDR]]
  br label %body
 body:
  %a = phi i32* [%addr, %entry], [%b, %body]




More information about the llvm-commits mailing list