1; RUN: llc < %s -verify-coalescing
2; PR12892
3;
4; Dead code elimination during coalesing causes a live range to split into two
5; virtual registers. Stale identity copies that had already been joined were
6; interfering with the liveness computations.
7
8target triple = "i386-pc-linux-gnu"
9
10define void @_ZN4llvm17AsmMatcherEmitter3runERNS_11raw_ostreamE() align 2 {
11  invoke void @_ZNK4llvm13CodeGenTarget12getAsmParserEv()
12          to label %1 unwind label %5
13
14; <label>:1                                       ; preds = %0
15  invoke void @_ZNK4llvm6Record16getValueAsStringENS_9StringRefE()
16          to label %4 unwind label %2
17
18; <label>:2                                       ; preds = %1
19  %3 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
20          cleanup
21  unreachable
22
23; <label>:4                                       ; preds = %1
24  invoke void @_ZN4llvm18isCurrentDebugTypeEPKc()
25          to label %12 unwind label %7
26
27; <label>:5                                       ; preds = %0
28  %6 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
29          cleanup
30  br label %33
31
32; <label>:7                                       ; preds = %4
33  %8 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
34          cleanup
35  br label %9
36
37; <label>:9                                       ; preds = %28, %7
38  %10 = phi { i8*, i32 } [ %29, %28 ], [ %8, %7 ]
39  %11 = extractvalue { i8*, i32 } %10, 1
40  invoke fastcc void @_ZN12_GLOBAL__N_114AsmMatcherInfoD2Ev()
41          to label %32 unwind label %35
42
43; <label>:12                                      ; preds = %4
44  invoke void @_ZNK4llvm13CodeGenTarget10getRegBankEv()
45          to label %13 unwind label %16
46
47; <label>:13                                      ; preds = %12
48  br label %14
49
50; <label>:14                                      ; preds = %20, %13
51  %15 = icmp eq i32 undef, 0
52  br i1 %15, label %20, label %18
53
54; <label>:16                                      ; preds = %12
55  %17 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
56          cleanup
57  br label %26
58
59; <label>:18                                      ; preds = %14
60  invoke void @_ZNSs4_Rep9_S_createEjjRKSaIcE()
61          to label %19 unwind label %21
62
63; <label>:19                                      ; preds = %18
64  unreachable
65
66; <label>:20                                      ; preds = %14
67  br label %14
68
69; <label>:21                                      ; preds = %18
70  %22 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
71          cleanup
72  %23 = extractvalue { i8*, i32 } %22, 1
73  br i1 undef, label %26, label %24
74
75; <label>:24                                      ; preds = %21
76  br i1 undef, label %25, label %26
77
78; <label>:25                                      ; preds = %24
79  unreachable
80
81; <label>:26                                      ; preds = %24, %21, %16
82  %27 = phi i32 [ 0, %16 ], [ %23, %21 ], [ %23, %24 ]
83  invoke void @_ZNSt6vectorISt4pairISsSsESaIS1_EED1Ev()
84          to label %28 unwind label %30
85
86; <label>:28                                      ; preds = %26
87  %29 = insertvalue { i8*, i32 } undef, i32 %27, 1
88  br label %9
89
90; <label>:30                                      ; preds = %26
91  %31 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
92          catch i8* null
93  unreachable
94
95; <label>:32                                      ; preds = %9
96  br label %33
97
98; <label>:33                                      ; preds = %32, %5
99  %34 = phi i32 [ undef, %5 ], [ %11, %32 ]
100  unreachable
101
102; <label>:35                                      ; preds = %9
103  %36 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
104          catch i8* null
105  unreachable
106}
107
108declare void @_ZNK4llvm13CodeGenTarget12getAsmParserEv()
109
110declare i32 @__gxx_personality_v0(...)
111
112declare void @_ZNK4llvm6Record16getValueAsStringENS_9StringRefE()
113
114declare void @_ZN4llvm18isCurrentDebugTypeEPKc()
115
116declare fastcc void @_ZN12_GLOBAL__N_114AsmMatcherInfoD2Ev() unnamed_addr inlinehint align 2
117
118declare hidden void @_ZNSt6vectorISt4pairISsSsESaIS1_EED1Ev() unnamed_addr align 2
119
120declare void @_ZNSs4_Rep9_S_createEjjRKSaIcE()
121
122declare void @_ZNK4llvm13CodeGenTarget10getRegBankEv()
123