diff options
Diffstat (limited to 'test/MC/WebAssembly')
| -rw-r--r-- | test/MC/WebAssembly/array-fill.ll | 14 | ||||
| -rw-r--r-- | test/MC/WebAssembly/external-data.ll | 3 | ||||
| -rw-r--r-- | test/MC/WebAssembly/external-func-address.ll | 49 | ||||
| -rw-r--r-- | test/MC/WebAssembly/unnamed-data.ll | 3 | ||||
| -rw-r--r-- | test/MC/WebAssembly/weak-alias.ll | 37 |
5 files changed, 80 insertions, 26 deletions
diff --git a/test/MC/WebAssembly/array-fill.ll b/test/MC/WebAssembly/array-fill.ll new file mode 100644 index 000000000000..4feabc0748e0 --- /dev/null +++ b/test/MC/WebAssembly/array-fill.ll @@ -0,0 +1,14 @@ +; RUN: llc -filetype=obj %s -o - | obj2yaml | FileCheck %s +; PR33624 + +source_filename = "ws.c" +target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128" +target triple = "wasm32-unknown-unknown-wasm" + +%struct.bd = type { i8 } + +@gBd = hidden global [2 x %struct.bd] [%struct.bd { i8 1 }, %struct.bd { i8 2 }], align 1 + +; CHECK: - Type: DATA +; CHECK: Content: '0102' +; CHECK: DataSize: 2 diff --git a/test/MC/WebAssembly/external-data.ll b/test/MC/WebAssembly/external-data.ll index 6914736ac671..b8c97453413e 100644 --- a/test/MC/WebAssembly/external-data.ll +++ b/test/MC/WebAssembly/external-data.ll @@ -13,7 +13,8 @@ ; CHECK: Index: 0 ; CHECK: Offset: 0x0000000E ; CHECK: Segments: -; CHECK: - Index: 0 +; CHECK: - SectionOffset: 6 +; CHECK: MemoryIndex: 0 ; CHECK: Offset: ; CHECK: Opcode: I32_CONST ; CHECK: Value: 0 diff --git a/test/MC/WebAssembly/external-func-address.ll b/test/MC/WebAssembly/external-func-address.ll index 4022b2c9bae9..53da9805f987 100644 --- a/test/MC/WebAssembly/external-func-address.ll +++ b/test/MC/WebAssembly/external-func-address.ll @@ -2,24 +2,33 @@ ; Verify that addresses of external functions generate correctly typed ; imports and relocations or type R_TABLE_INDEX_I32. -declare void @f1() #1 -@ptr_to_f1 = hidden global void ()* @f1, align 4 +declare void @f1(i32) #1 +@ptr_to_f1 = hidden global void (i32)* @f1, align 4 - -; CHECK: - Type: IMPORT -; CHECK: Imports: -; CHECK: - Module: env -; CHECK: Field: f1 -; CHECK: Kind: FUNCTION -; CHECK: SigIndex: 0 -; CHECK: - Type: ELEM -; CHECK: Segments: -; CHECK: - Offset: -; CHECK: Opcode: I32_CONST -; CHECK: Value: 0 -; CHECK: Functions: [ 0 ] -; CHECK: - Type: DATA -; CHECK: Relocations: -; CHECK: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32 -; CHECK: Index: 0 -; CHECK: Offset: 0x00000006 +; CHECK: --- !WASM +; CHECK-NEXT: FileHeader: +; CHECK-NEXT: Version: 0x00000001 +; CHECK-NEXT: Sections: +; CHECK-NEXT: - Type: TYPE +; CHECK-NEXT: Signatures: +; CHECK-NEXT: - Index: 0 +; CHECK-NEXT: ReturnType: NORESULT +; CHECK-NEXT: ParamTypes: +; CHECK-NEXT: - I32 +; CHECK: - Type: IMPORT +; CHECK-NEXT: Imports: +; CHECK-NEXT: - Module: env +; CHECK-NEXT: Field: f1 +; CHECK-NEXT: Kind: FUNCTION +; CHECK-NEXT: SigIndex: 0 +; CHECK: - Type: ELEM +; CHECK-NEXT: Segments: +; CHECK-NEXT: - Offset: +; CHECK-NEXT: Opcode: I32_CONST +; CHECK-NEXT: Value: 0 +; CHECK-NEXT: Functions: [ 0 ] +; CHECK: - Type: DATA +; CHECK-NEXT: Relocations: +; CHECK-NEXT: - Type: R_WEBASSEMBLY_TABLE_INDEX_I32 +; CHECK-NEXT: Index: 0 +; CHECK-NEXT: Offset: 0x00000006 diff --git a/test/MC/WebAssembly/unnamed-data.ll b/test/MC/WebAssembly/unnamed-data.ll index fd985088c1d2..fa0ff966a79f 100644 --- a/test/MC/WebAssembly/unnamed-data.ll +++ b/test/MC/WebAssembly/unnamed-data.ll @@ -46,7 +46,8 @@ ; CHECK-NEXT: Index: 1 ; CHECK-NEXT: Offset: 0x0000001E ; CHECK-NEXT: Segments: -; CHECK-NEXT: - Index: 0 +; CHECK-NEXT: - SectionOffset: 6 +; CHECK-NEXT: MemoryIndex: 0 ; CHECK-NEXT: Offset: ; CHECK-NEXT: Opcode: I32_CONST ; CHECK-NEXT: Value: 0 diff --git a/test/MC/WebAssembly/weak-alias.ll b/test/MC/WebAssembly/weak-alias.ll index 6e2b8631d2b1..1d80ea4aac6c 100644 --- a/test/MC/WebAssembly/weak-alias.ll +++ b/test/MC/WebAssembly/weak-alias.ll @@ -3,27 +3,56 @@ ; foo_alias() function is weak alias of function foo() ; Generates two exports of the same function, one of them weak -@foo_alias = weak hidden alias i32 (...), bitcast (i32 ()* @foo to i32 (...)*) +@foo_alias = weak hidden alias i32 (), i32 ()* @foo + +define hidden i32 @call_alias() #0 { +entry: + %call = call i32 @foo_alias() + ret i32 %call +} define hidden i32 @foo() #0 { entry: ret i32 0 } + +; CHECK: - Type: TYPE +; CHECK-NEXT: Signatures: +; CHECK-NEXT: - Index: 0 +; CHECK-NEXT: ReturnType: I32 +; CHECK-NEXT: ParamTypes: + +; CHECK: - Type: IMPORT +; CHECK-NEXT: Imports: +; CHECK-NEXT: - Module: env +; CHECK-NEXT: Field: foo_alias +; CHECK-NEXT: Kind: FUNCTION +; CHECK-NEXT: SigIndex: 0 + +; CHECK: - Type: FUNCTION +; CHECK-NEXT: FunctionTypes: [ 0, 0 ] + ; CHECK: - Type: EXPORT ; CHECK-NEXT: Exports: +; CHECK-NEXT: - Name: call_alias +; CHECK-NEXT: Kind: FUNCTION +; CHECK-NEXT: Index: 1 ; CHECK-NEXT: - Name: foo ; CHECK-NEXT: Kind: FUNCTION -; CHECK-NEXT: Index: 0 +; CHECK-NEXT: Index: 2 ; CHECK-NEXT: - Name: foo_alias ; CHECK-NEXT: Kind: FUNCTION -; CHECK-NEXT: Index: 0 - +; CHECK-NEXT: Index: 2 ; CHECK: - Type: CUSTOM ; CHECK-NEXT: Name: name ; CHECK-NEXT: FunctionNames: ; CHECK-NEXT: - Index: 0 +; CHECK-NEXT: Name: foo_alias +; CHECK-NEXT: - Index: 1 +; CHECK-NEXT: Name: call_alias +; CHECK-NEXT: - Index: 2 ; CHECK-NEXT: Name: foo ; CHECK-NEXT: - Type: CUSTOM ; CHECK-NEXT: Name: linking |
