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