Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / MergeFunc / debuginfo-iterators.ll
blob7f259159ce9d3392f5ee205403fa5db8d28daf3b
1 ;; Ensure that the MergeFunctions pass creates thunks with the appropriate debug
2 ;; info format set (which would otherwise assert when inlining those thunks).
3 ; RUN: opt -S -passes=mergefunc,inline --try-experimental-debuginfo-iterators < %s | FileCheck %s
5 declare void @f1()
6 declare void @f2()
8 define void @f3() {
9   call void @f1()
10   call void @f2()
11   ret void
14 ;; MergeFunctions will replace f4 with a thunk that calls f3. Inlining will
15 ;; inline f3 into that thunk, which would assert if the thunk had the incorrect
16 ;; debug info format.
17 define void @f4() {
18   call void @f1()
19   call void @f2()
20   ret void
23 ; CHECK-LABEL: define void @f4() {
24 ; CHECK-NEXT:    call void @f1()
25 ; CHECK-NEXT:    call void @f2()
26 ; CHECK-NEXT:    ret void
27 ; CHECK-NEXT: }
29 ;; Both of these are interposable, so MergeFunctions will create a common thunk
30 ;; that both will call. Inlining will inline that thunk back, which would assert
31 ;; if the thunk had the incorrect debug info format.
32 define weak void @f5() {
33   call void @f2()
34   call void @f1()
35   ret void
38 define weak void @f6() {
39   call void @f2()
40   call void @f1()
41   ret void
44 ; CHECK-LABEL: define weak void @f6() {
45 ; CHECK-NEXT:    call void @f2()
46 ; CHECK-NEXT:    call void @f1()
47 ; CHECK-NEXT:    ret void
48 ; CHECK-NEXT:  }
50 ; CHECK-LABEL: define weak void @f5() {
51 ; CHECK-NEXT:    call void @f2()
52 ; CHECK-NEXT:    call void @f1()
53 ; CHECK-NEXT:    ret void
54 ; CHECK-NEXT:  }