1; RUN: llc --mtriple=wasm32-unknown-unknown -asm-verbose=false %s -o - | FileCheck --check-prefixes CHECK -DPTR=i32 %s 2; RUN: llc --mtriple=wasm64-unknown-unknown -asm-verbose=false %s -o - | FileCheck --check-prefixes CHECK -DPTR=i64 %s 3 4; empty function that does not use stack, to check WebAssemblyMCLowerPrePass 5; works correctly. 6define hidden void @bar() #0 { 7 ret void 8} 9 10; Function that uses explict stack, and should generate a reference to 11; __stack_pointer, along with the corresponding relocation entry. 12define hidden void @foo() #0 { 13entry: 14 alloca i32, align 4 15 ret void 16} 17 18; CHECK: .text 19; CHECK-NEXT: .file "stack-ptr-mclower.ll" 20; CHECK-NEXT: .globaltype __stack_pointer, [[PTR]] 21; CHECK-NEXT: .functype bar () -> () 22; CHECK-NEXT: .functype foo () -> () 23 24; CHECK-NEXT: .section .text.bar,"",@ 25; CHECK-NEXT: .hidden bar 26; CHECK-NEXT: .globl bar 27; CHECK-NEXT: .type bar,@function 28; CHECK-NEXT: bar: 29; CHECK-NEXT: .functype bar () -> () 30; CHECK-NEXT: end_function 31; CHECK-NEXT: .Lfunc_end0: 32; CHECK-NEXT: .size bar, .Lfunc_end0-bar 33 34; CHECK: .section .text.foo,"",@ 35; CHECK-NEXT: .hidden foo 36; CHECK-NEXT: .globl foo 37; CHECK-NEXT: .type foo,@function 38; CHECK-NEXT: foo: 39; CHECK-NEXT: .functype foo () -> () 40; CHECK-NEXT: global.get __stack_pointer 41; CHECK-NEXT: [[PTR]].const 16 42; CHECK-NEXT: [[PTR]].sub 43; CHECK-NEXT: drop 44; CHECK-NEXT: end_function 45; CHECK-NEXT: .Lfunc_end1: 46; CHECK-NEXT: .size foo, .Lfunc_end1-foo 47