This fixes bug <https://github.com/llvm/llvm-project/issues/54022>. For now this means that defined functions will have two .functype directives emitted. Given discussion in that bug has suggested interest in moving towards using something other than .functype to mark the beginning of a function (which would, as a side-effect, solve this issue), this patch doesn't attempt to avoid that duplication. Some test cases that used CHECK-LABEL: foo rather than CHECK-LABEL: foo: are broken by this change. This patch updates those test cases to always have a colon at the end of the CHECK-LABEL string. Differential Revision: https://reviews.llvm.org/D122134
30 lines
912 B
LLVM
30 lines
912 B
LLVM
; RUN: llc -mtriple=wasm32 < %s | FileCheck %s
|
|
|
|
; Skip past the functype directives, which interfere with the CHECK-LABEL
|
|
; matches.
|
|
;
|
|
; Test that %c works with immediates
|
|
; CHECK-LABEL: test_inlineasm_c_output_template0:
|
|
; CHECK: #TEST 42
|
|
define dso_local i32 @test_inlineasm_c_output_template0() {
|
|
tail call void asm sideeffect "#TEST ${0:c}", "i"(i32 42)
|
|
ret i32 42
|
|
}
|
|
|
|
; Test that %c works with global address
|
|
; CHECK-LABEL: test_inlineasm_c_output_template2:
|
|
; CHECK: #TEST baz
|
|
@baz = internal global i32 0, align 4
|
|
define dso_local i32 @test_inlineasm_c_output_template2() {
|
|
tail call void asm sideeffect "#TEST ${0:c}", "i"(i32* nonnull @baz)
|
|
ret i32 42
|
|
}
|
|
|
|
; Test that %n works with immediates
|
|
; CHECK-LABEL: test_inlineasm_c_output_template1:
|
|
; CHECK: #TEST -42
|
|
define dso_local i32 @test_inlineasm_c_output_template1() {
|
|
tail call void asm sideeffect "#TEST ${0:n}", "i"(i32 42)
|
|
ret i32 42
|
|
}
|