136 lines · plain
1; RUN: llc -mcpu=mvp -filetype=obj -o %t.o %s2; RUN: llc -mcpu=mvp -filetype=obj %S/Inputs/weak-alias.ll -o %t2.o3; RUN: wasm-ld --export-dynamic %t.o %t2.o -o %t.wasm4; RUN: obj2yaml %t.wasm | FileCheck %s5 6; Test that the strongly defined alias_fn from this file is used both here7; and in call_alias.8 9target triple = "wasm32-unknown-unknown"10 11define i32 @alias_fn() local_unnamed_addr #1 {12 ret i32 113}14 15; Function Attrs: nounwind uwtable16define void @_start() local_unnamed_addr #1 {17entry:18 %call = tail call i32 @alias_fn() #219 ret void20}21 22; CHECK: --- !WASM23; CHECK-NEXT: FileHeader:24; CHECK-NEXT: Version: 0x125; CHECK-NEXT: Sections:26; CHECK-NEXT: - Type: TYPE27; CHECK-NEXT: Signatures:28; CHECK-NEXT: - Index: 029; CHECK-NEXT: ParamTypes: []30; CHECK-NEXT: ReturnTypes:31; CHECK-NEXT: - I3232; CHECK-NEXT: - Index: 133; CHECK-NEXT: ParamTypes: []34; CHECK-NEXT: ReturnTypes: []35; CHECK-NEXT: - Type: FUNCTION36; CHECK-NEXT: FunctionTypes: [ 0, 1, 0, 0, 0, 0, 0 ]37; CHECK-NEXT: - Type: TABLE38; CHECK-NEXT: Tables:39; CHECK-NEXT: - Index: 040; CHECK-NEXT: ElemType: FUNCREF41; CHECK-NEXT: Limits:42; CHECK-NEXT: Flags: [ HAS_MAX ]43; CHECK-NEXT: Minimum: 0x344; CHECK-NEXT: Maximum: 0x345; CHECK-NEXT: - Type: MEMORY46; CHECK-NEXT: Memories:47; CHECK-NEXT: - Minimum: 0x148; CHECK-NEXT: - Type: GLOBAL49; CHECK-NEXT: Globals:50; CHECK-NEXT: - Index: 051; CHECK-NEXT: Type: I3252; CHECK-NEXT: Mutable: true53; CHECK-NEXT: InitExpr:54; CHECK-NEXT: Opcode: I32_CONST55; CHECK-NEXT: Value: 6553656; CHECK-NEXT: - Type: EXPORT57; CHECK-NEXT: Exports:58; CHECK-NEXT: - Name: memory59; CHECK-NEXT: Kind: MEMORY60; CHECK-NEXT: Index: 061; CHECK-NEXT: - Name: alias_fn62; CHECK-NEXT: Kind: FUNCTION63; CHECK-NEXT: Index: 064; CHECK-NEXT: - Name: _start65; CHECK-NEXT: Kind: FUNCTION66; CHECK-NEXT: Index: 167; CHECK-NEXT: - Name: direct_fn68; CHECK-NEXT: Kind: FUNCTION69; CHECK-NEXT: Index: 270; CHECK-NEXT: - Name: call_direct71; CHECK-NEXT: Kind: FUNCTION72; CHECK-NEXT: Index: 373; CHECK-NEXT: - Name: call_alias74; CHECK-NEXT: Kind: FUNCTION75; CHECK-NEXT: Index: 476; CHECK-NEXT: - Name: call_alias_ptr77; CHECK-NEXT: Kind: FUNCTION78; CHECK-NEXT: Index: 579; CHECK-NEXT: - Name: call_direct_ptr80; CHECK-NEXT: Kind: FUNCTION81; CHECK-NEXT: Index: 682; CHECK-NEXT: - Type: ELEM83; CHECK-NEXT: Segments:84; CHECK-NEXT: - Offset:85; CHECK-NEXT: Opcode: I32_CONST86; CHECK-NEXT: Value: 187; CHECK-NEXT: Functions: [ 0, 2 ]88; CHECK-NEXT: - Type: CODE89; CHECK-NEXT: Functions:90; CHECK-NEXT: - Index: 091; CHECK-NEXT: Locals:92; CHECK-NEXT: Body: 41010B93; CHECK-NEXT: - Index: 194; CHECK-NEXT: Locals:95; CHECK-NEXT: Body: 1080808080001A0B96; CHECK-NEXT: - Index: 297; CHECK-NEXT: Locals:98; CHECK-NEXT: Body: 41000B99; CHECK-NEXT: - Index: 3100; CHECK-NEXT: Locals:101; CHECK-NEXT: Body: 1082808080000B102; CHECK-NEXT: - Index: 4103; CHECK-NEXT: Locals:104; CHECK-NEXT: Body: 1080808080000B105; CHECK-NEXT: - Index: 5106; CHECK-NEXT: Locals:107; CHECK-NEXT: - Type: I32108; CHECK-NEXT: Count: 2109; CHECK-NEXT: Body: 23808080800041106B220024808080800020004181808080003602081080808080002101200041106A24808080800020010B110; CHECK-NEXT: - Index: 6111; CHECK-NEXT: Locals:112; CHECK-NEXT: - Type: I32113; CHECK-NEXT: Count: 2114; CHECK-NEXT: Body: 23808080800041106B220024808080800020004182808080003602081082808080002101200041106A24808080800020010B115; CHECK-NEXT: - Type: CUSTOM116; CHECK-NEXT: Name: name117; CHECK-NEXT: FunctionNames:118; CHECK-NEXT: - Index: 0119; CHECK-NEXT: Name: alias_fn120; CHECK-NEXT: - Index: 1121; CHECK-NEXT: Name: _start122; CHECK-NEXT: - Index: 2123; CHECK-NEXT: Name: direct_fn124; CHECK-NEXT: - Index: 3125; CHECK-NEXT: Name: call_direct126; CHECK-NEXT: - Index: 4127; CHECK-NEXT: Name: call_alias128; CHECK-NEXT: - Index: 5129; CHECK-NEXT: Name: call_alias_ptr130; CHECK-NEXT: - Index: 6131; CHECK-NEXT: Name: call_direct_ptr132; CHECK-NEXT: GlobalNames:133; CHECK-NEXT: - Index: 0134; CHECK-NEXT: Name: __stack_pointer135; CHECK-NEXT: ...136