diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/WebAssembly/call-pic.ll | 6 | ||||
| -rw-r--r-- | llvm/test/CodeGen/WebAssembly/load-store-pic.ll | 8 | ||||
| -rw-r--r-- | llvm/test/MC/WebAssembly/reloc-pic.s | 93 |
3 files changed, 98 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/call-pic.ll b/llvm/test/CodeGen/WebAssembly/call-pic.ll index 7fd93c65b77..b50f96d6d72 100644 --- a/llvm/test/CodeGen/WebAssembly/call-pic.ll +++ b/llvm/test/CodeGen/WebAssembly/call-pic.ll @@ -5,14 +5,14 @@ target triple = "wasm32-unknown-unknown" declare i32 @foo() declare i32 @bar() -declare hidden i32 @hidden_function(); +declare hidden i32 @hidden_function() @indirect_func = global i32 ()* @foo define void @call_indirect_func() { ; CHECK-LABEL: call_indirect_func: ; CHECK: global.get $push[[L0:[0-9]+]]=, __memory_base{{$}} -; CHECK-NEXT: i32.const $push[[L1:[0-9]+]]=, indirect_func{{$}} +; CHECK-NEXT: i32.const $push[[L1:[0-9]+]]=, indirect_func@MBREL{{$}} ; CHECK-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} ; CHECK-NEXT: i32.load $push[[L3:[0-9]+]]=, 0($pop[[L2]]){{$}} ; CHECK-NEXT: i32.call_indirect $push[[L4:[0-9]+]]=, $pop[[L3]]{{$}} @@ -43,7 +43,7 @@ define i8* @get_function_address() { define i8* @get_function_address_hidden() { ; CHECK-LABEL: get_function_address_hidden: ; CHECK: global.get $push[[L0:[0-9]+]]=, __table_base{{$}} -; CHECK-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_function{{$}} +; CHECK-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_function@TBREL{{$}} ; CHECK-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} ; CHECK-NEXT: return $pop[[L2]]{{$}} ; CHECK-NEXT: end_function{{$}} diff --git a/llvm/test/CodeGen/WebAssembly/load-store-pic.ll b/llvm/test/CodeGen/WebAssembly/load-store-pic.ll index bb449cadca8..2f7f34ddf6f 100644 --- a/llvm/test/CodeGen/WebAssembly/load-store-pic.ll +++ b/llvm/test/CodeGen/WebAssembly/load-store-pic.ll @@ -21,7 +21,7 @@ declare i32 @foo(); define i32 @load_hidden_global() { ; CHECK-LABEL: load_hidden_global: ; PIC: global.get $push[[L0:[0-9]+]]=, __memory_base{{$}} -; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global{{$}} +; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global@MBREL{{$}} ; PIC-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} ; PIC-NEXT: i32.load $push[[L3:[0-9]+]]=, 0($pop[[L2]]){{$}} @@ -36,7 +36,7 @@ define i32 @load_hidden_global() { define i32 @load_hidden_global_offset() { ; CHECK-LABEL: load_hidden_global_offset: ; PIC: global.get $push[[L0:[0-9]+]]=, __memory_base{{$}} -; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global_array{{$}} +; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global_array@MBREL{{$}} ; PIC-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1:[0-9]+]]{{$}} ; PIC-NEXT: i32.const $push[[L3:[0-9]+]]=, 20{{$}} ; PIC-NEXT: i32.add $push[[L4:[0-9]+]]=, $pop[[L2]], $pop[[L3]]{{$}} @@ -56,7 +56,7 @@ define i32 @load_hidden_global_offset() { define void @store_hidden_global(i32 %n) { ; CHECK-LABEL: store_hidden_global: ; PIC: global.get $push[[L0:[0-9]+]]=, __memory_base{{$}} -; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global{{$}} +; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global@MBREL{{$}} ; PIC-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} ; PIC-NEXT: i32.store 0($pop[[L2]]), $0{{$}} @@ -71,7 +71,7 @@ define void @store_hidden_global(i32 %n) { define void @store_hidden_global_offset(i32 %n) { ; CHECK-LABEL: store_hidden_global_offset: ; PIC: global.get $push[[L0:[0-9]+]]=, __memory_base{{$}} -; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global_array{{$}} +; PIC-NEXT: i32.const $push[[L1:[0-9]+]]=, hidden_global_array@MBREL{{$}} ; PIC-NEXT: i32.add $push[[L2:[0-9]+]]=, $pop[[L0]], $pop[[L1]]{{$}} ; PIC-NEXT: i32.const $push[[L3:[0-9]+]]=, 20{{$}} ; PIC-NEXT: i32.add $push[[L4:[0-9]+]]=, $pop[[L2]], $pop[[L3]]{{$}} diff --git a/llvm/test/MC/WebAssembly/reloc-pic.s b/llvm/test/MC/WebAssembly/reloc-pic.s index 49aaa858aec..249cd1fb89a 100644 --- a/llvm/test/MC/WebAssembly/reloc-pic.s +++ b/llvm/test/MC/WebAssembly/reloc-pic.s @@ -16,6 +16,32 @@ load_default_func: i32.load 0 end_function +load_hidden_data: + .functype load_hidden_data () -> (i32) + global.get __memory_base + i32.const .L.hidden_data@MBREL + i32.add + end_function + +load_hidden_func: + .functype load_hidden_func () -> (i32) + global.get __table_base + i32.const hidden_func@TBREL + i32.add + end_function + +hidden_func: + .functype hidden_func () -> (i32) + i32.const 0 + end_function + +.section .rodata.hidden_data,"",@ +.L.hidden_data: + .int8 100 + .size .L.hidden_data, 1 + +#.hidden hidden_func +#.hidden hidden_data .size default_data, 4 .functype default_func () -> (i32) @@ -34,7 +60,7 @@ load_default_func: # CHECK-NEXT: Field: __linear_memory # CHECK-NEXT: Kind: MEMORY # CHECK-NEXT: Memory: -# CHECK-NEXT: Initial: 0x00000000 +# CHECK-NEXT: Initial: 0x00000001 # CHECK-NEXT: - Module: env # CHECK-NEXT: Field: __indirect_function_table # CHECK-NEXT: Kind: TABLE @@ -57,7 +83,7 @@ load_default_func: # CHECK-NEXT: GlobalType: I32 # CHECK-NEXT: GlobalMutable: true # CHECK-NEXT: - Type: FUNCTION -# CHECK-NEXT: FunctionTypes: [ 0, 0 ] +# CHECK-NEXT: FunctionTypes: [ 0, 0, 0, 0, 0 ] # CHECK-NEXT: - Type: CODE # CHECK-NEXT: Relocations: # CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB @@ -66,6 +92,18 @@ load_default_func: # CHECK-NEXT: - Type: R_WASM_GLOBAL_INDEX_LEB # CHECK-NEXT: Index: 3 # CHECK-NEXT: Offset: 0x00000010 +# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_LEB +# CHECK-NEXT: Index: 5 +# CHECK-NEXT: Offset: 0x0000001C +# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_REL_SLEB +# CHECK-NEXT: Index: 6 +# CHECK-NEXT: Offset: 0x00000022 +# CHECK-NEXT: - Type: R_WASM_MEMORY_ADDR_LEB +# CHECK-NEXT: Index: 8 +# CHECK-NEXT: Offset: 0x0000002C +# CHECK-NEXT: - Type: R_WASM_TABLE_INDEX_REL_SLEB +# CHECK-NEXT: Index: 9 +# CHECK-NEXT: Offset: 0x00000032 # CHECK-NEXT: Functions: # CHECK-NEXT: - Index: 1 # CHECK-NEXT: Locals: [] @@ -73,6 +111,23 @@ load_default_func: # CHECK-NEXT: - Index: 2 # CHECK-NEXT: Locals: [] # CHECK-NEXT: Body: 2381808080002800000B +# CHECK-NEXT: - Index: 3 +# CHECK-NEXT: Locals: [] +# CHECK-NEXT: Body: 2380808080004180808080006A0B +# CHECK-NEXT: - Index: 4 +# CHECK-NEXT: Locals: [] +# CHECK-NEXT: Body: 2380808080004180808080006A0B +# CHECK-NEXT: - Index: 5 +# CHECK-NEXT: Locals: [] +# CHECK-NEXT: Body: 41000B +# CHECK-NEXT: - Type: DATA +# CHECK-NEXT: Segments: +# CHECK-NEXT: - SectionOffset: 6 +# CHECK-NEXT: InitFlags: 0 +# CHECK-NEXT: Offset: +# CHECK-NEXT: Opcode: I32_CONST +# CHECK-NEXT: Value: 0 +# CHECK-NEXT: Content: '64' # CHECK-NEXT: - Type: CUSTOM # CHECK-NEXT: Name: linking # CHECK-NEXT: Version: 2 @@ -96,4 +151,38 @@ load_default_func: # CHECK-NEXT: Name: default_func # CHECK-NEXT: Flags: [ UNDEFINED ] # CHECK-NEXT: Function: 0 +# CHECK-NEXT: - Index: 4 +# CHECK-NEXT: Kind: FUNCTION +# CHECK-NEXT: Name: load_hidden_data +# CHECK-NEXT: Flags: [ BINDING_LOCAL ] +# CHECK-NEXT: Function: 3 +# CHECK-NEXT: - Index: 5 +# CHECK-NEXT: Kind: DATA +# CHECK-NEXT: Name: __memory_base +# CHECK-NEXT: Flags: [ UNDEFINED ] +# CHECK-NEXT: - Index: 6 +# CHECK-NEXT: Kind: DATA +# CHECK-NEXT: Name: .L.hidden_data +# CHECK-NEXT: Flags: [ BINDING_LOCAL ] +# CHECK-NEXT: Segment: 0 +# CHECK-NEXT: Size: 1 +# CHECK-NEXT: - Index: 7 +# CHECK-NEXT: Kind: FUNCTION +# CHECK-NEXT: Name: load_hidden_func +# CHECK-NEXT: Flags: [ BINDING_LOCAL ] +# CHECK-NEXT: Function: 4 +# CHECK-NEXT: - Index: 8 +# CHECK-NEXT: Kind: DATA +# CHECK-NEXT: Name: __table_base +# CHECK-NEXT: Flags: [ UNDEFINED ] +# CHECK-NEXT: - Index: 9 +# CHECK-NEXT: Kind: FUNCTION +# CHECK-NEXT: Name: hidden_func +# CHECK-NEXT: Flags: [ BINDING_LOCAL ] +# CHECK-NEXT: Function: 5 +# CHECK-NEXT: SegmentInfo: +# CHECK-NEXT: - Index: 0 +# CHECK-NEXT: Name: .rodata.hidden_data +# CHECK-NEXT: Alignment: 0 +# CHECK-NEXT: Flags: [ ] # CHECK-NEXT: ... |

