Index: lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp =================================================================== --- lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp +++ lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp @@ -249,6 +249,10 @@ case TargetOpcode::COPY: OS << "get_local push, " << regToString(MI->getOperand(1)); break; + case WebAssembly::GLOBAL: + // TODO: wasm64 + OS << "i32.const push, " << toSymbol(MI->getOperand(1).getGlobal()->getName()); + break; case WebAssembly::ARGUMENT_I32: case WebAssembly::ARGUMENT_I64: case WebAssembly::ARGUMENT_F32: Index: test/CodeGen/WebAssembly/global.ll =================================================================== --- test/CodeGen/WebAssembly/global.ll +++ test/CodeGen/WebAssembly/global.ll @@ -9,6 +9,13 @@ ; 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: