xref: /llvm-project/llvm/test/ThinLTO/X86/alias-ifunc.ll (revision d5d3eb16b7ab72529c83dacb2889811491e48909)
1; RUN: opt -module-summary -o %t.bc %s
2; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-BAR
3; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-BAZ
4; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-QUX
5; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-RESOLVER
6; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-QUUX
7; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-CORGE
8; RUN: llvm-dis < %t.bc | FileCheck %s --check-prefix=CHECK-GRAULT
9; RUN: llvm-lto2 run %t.bc -r %t.bc,foo,px -r %t.bc,bar,px -r %t.bc,baz,px -r %t.bc,qux,px -r %t.bc,grault,px -o %t2
10; RUN: llvm-nm %t2.1 | FileCheck %s --check-prefix=CHECK-SYMBOL
11
12; CHECK-SYMBOL: i bar
13; CHECK-SYMBOL: i baz
14; CHECK-SYMBOL: i foo
15; CHECK-SYMBOL: t foo_resolver
16; CHECK-SYMBOL: i grault
17; CHECK-SYMBOL: i quuz
18; CHECK-SYMBOL: i qux
19
20target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
21target triple = "x86_64-unknown-linux-gnu"
22@foo = ifunc i32 (i32), ptr @foo_resolver
23; CHECK-RESOLVER:      (name: "foo_resolver"
24; CHECK-RESOLVER-SAME: live: 1
25define internal ptr @foo_resolver() {
26entry:
27  ret ptr null
28}
29; CHECK-BAR:      (name: "bar"
30; CHECK-BAR-NOT:  summaries: (
31; CHECK-BAR-SAME: ; guid = {{[0-9]+}}
32@bar = alias i32 (i32), ptr @foo
33
34; CHECK-BAZ:      (name: "baz"
35; CHECK-BAZ-NOT:  summaries: (
36; CHECK-BAZ-SAME: ; guid = {{[0-9]+}}
37@baz = weak alias i32 (i32), ptr @foo
38
39; CHECK-QUX:      (name: "qux"
40; CHECK-QUX-NOT:  summaries: (
41; CHECK-QUX-SAME: ; guid = {{[0-9]+}}
42@qux = alias i32 (i32), ptr @bar
43
44; CHECK-QUUX:      (name: "quux"
45; CHECK-QUUX-SAME: live: 1
46@quux = internal alias ptr (), ptr @foo_resolver
47@quuz = internal ifunc i32 (i32), ptr @quux
48
49; CHECK-CORGE:      (name: "corge"
50; CHECK-CORGE-NOT:  summaries: (
51; CHECK-CORGE-SAME: ; guid = {{[0-9]+}}
52@corge = internal alias i32 (i32), ptr @quuz
53
54; CHECK-GRAULT:      (name: "grault"
55; CHECK-GRAULT-NOT:  summaries: (
56; CHECK-GRAULT-SAME: ; guid = {{[0-9]+}}
57@grault = alias i32 (i32), ptr @corge
58