[WebAssembly] Fix printing of global operands
authorDerek Schuff <dschuff@google.com>
Tue, 17 Nov 2015 00:20:44 +0000 (00:20 +0000)
committerDerek Schuff <dschuff@google.com>
Tue, 17 Nov 2015 00:20:44 +0000 (00:20 +0000)
This was regressed in r252656 which wasn't quite NFC. Instead of using a
custom instruction as before, use a pattern to select CONST_I32 for the
global addrs.

Differential Revision: http://reviews.llvm.org/D14587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253276 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/WebAssembly/WebAssemblyInstrInfo.td
test/CodeGen/WebAssembly/global.ll

index c4adeab4c6acd174a49f2c298ad08d47abc93825..9d59519822048dec39f8a74cdc7df0cff810f121 100644 (file)
@@ -106,10 +106,10 @@ def CONST_F64 : I<(outs F64:$res), (ins f64imm:$imm),
                   [(set F64:$res, fpimm:$imm)],
                   "f64.const\t$res, $imm">;
 
-// Special types of immediates. FIXME: Hard-coded as 32-bit for now.
-def GLOBAL : I<(outs I32:$dst), (ins global:$addr),
-               [(set I32:$dst, (WebAssemblywrapper tglobaladdr:$addr))],
-               "global\t$dst, $addr">;
+
+def : Pat<(i32 (WebAssemblywrapper tglobaladdr :$dst)),
+          (CONST_I32 tglobaladdr :$dst)>;
+
 def JUMP_TABLE : I<(outs I32:$dst), (ins tjumptable_op:$addr),
                    [(set I32:$dst, (WebAssemblywrapper tjumptable:$addr))],
                    "jump_table\t$dst, $addr">;
index 70bbbe7906aa8f7f7f1d517f9f17a9f107428fd3..1d818d1e5e666f8b6817356c4bc9fe205e56a40a 100644 (file)
@@ -9,6 +9,13 @@ target triple = "wasm32-unknown-unknown"
 ; CHECK-NOT: llvm.metadata
 @llvm.used = appending global [1 x i32*] [i32* @g], section "llvm.metadata"
 
+; CHECK: foo:
+; CHECK: i32.const $push, answer
+define i32 @foo() {
+  %a = load i32, i32* @answer
+  ret i32 %a
+}
+
 ; CHECK: .type   g,@object
 ; CHECK: .align  2{{$}}
 ; CHECK-NEXT: g: