[TySan] Don't report globals with incomplete types. (#121922)
[llvm-project.git] / llvm / test / Transforms / MergeFunc / dso_local_equivalent_unmerged.ll
bloba6d3577e5643fec892b72a29e9b189c930ed19fd
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ;; Check the cases involving dso_local_equivalent where we do not expect functions to be merged.
3 ; RUN: opt -S -passes=mergefunc < %s | FileCheck %s
5 @x = constant { ptr, ptr } { ptr @a, ptr @b }
6 ; CHECK: { ptr @a, ptr @b }
8 @x2 = constant { ptr, ptr } { ptr @c, ptr @d }
9 ; CHECK: { ptr @c, ptr @d }
11 ;; func1 and func2 are different functions.
12 declare i32 @func1()
13 define i32 @func2() {
14 ; CHECK-LABEL: @func2(
15 ; CHECK-NEXT:    ret i32 0
17   ret i32 0
20 define internal i32 @a() unnamed_addr {
21 ; CHECK-LABEL: @a(
22 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 dso_local_equivalent @func1()
23 ; CHECK-NEXT:    ret i32 [[TMP1]]
25   %1 = call i32 dso_local_equivalent @func1()
26   ret i32 %1
29 define internal i32 @b() unnamed_addr {
30 ; CHECK-LABEL: @b(
31 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 dso_local_equivalent @func2()
32 ; CHECK-NEXT:    ret i32 [[TMP1]]
34   %1 = call i32 dso_local_equivalent @func2()
35   ret i32 %1
38 ;; func3 and func4 have the same body and signature but do not have merged
39 ;; callers because they are different functions.
40 define i32 @func3() {
41 ; CHECK-LABEL: @func3(
42 ; CHECK-NEXT:    ret i32 0
44   ret i32 0
46 define i32 @func4() {
47 ; CHECK-LABEL: @func4(
48 ; CHECK-NEXT:    ret i32 0
50   ret i32 0
53 define internal i32 @c() unnamed_addr {
54 ; CHECK-LABEL: @c(
55 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 dso_local_equivalent @func3()
56 ; CHECK-NEXT:    ret i32 [[TMP1]]
58   %1 = call i32 dso_local_equivalent @func3()
59   ret i32 %1
62 define internal i32 @d() unnamed_addr {
63 ; CHECK-LABEL: @d(
64 ; CHECK-NEXT:    [[TMP1:%.*]] = call i32 dso_local_equivalent @func4()
65 ; CHECK-NEXT:    ret i32 [[TMP1]]
67   %1 = call i32 dso_local_equivalent @func4()
68   ret i32 %1