llvm.org GIT mirror llvm / 0883d3f
Merging r215711: ------------------------------------------------------------------------ r215711 | wschmidt | 2014-08-15 06:51:57 -0700 (Fri, 15 Aug 2014) | 8 lines [PPC64] Add test case for r215685. I had deferred adding this test case until I could get it down to a reasonable size. That's done now. Thanks, Bill ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_35@215879 91177308-0d34-0410-b5e6-96231b3b80d8 Bill Wendling 5 years ago
1 changed file(s) with 534 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 ; RUN: llc < %s | FileCheck %s
1 target datalayout = "e-m:e-i64:64-n32:64"
2 target triple = "powerpc64le-unknown-linux-gnu"
3
4 ; This test checks for misordering of a TOC restore instruction relative
5 ; to subsequent uses of the TOC register. Previously this test broke
6 ; because there was no TOC register dependency between the instructions,
7 ; and the usual stack-adjust instructions that held the TOC restore in
8 ; place were optimized away.
9
10 %"class.llvm::Module" = type { %"class.llvm::LLVMContext"*, %"class.llvm::iplist", %"class.llvm::iplist.0", %"class.llvm::iplist.9", %"struct.llvm::ilist", %"class.std::basic_string", %"class.llvm::ValueSymbolTable"*, %"class.llvm::StringMap", %"class.std::unique_ptr", %"class.std::basic_string", %"class.std::basic_string", i8*, %"class.llvm::RandomNumberGenerator"*, %"class.std::basic_string", %"class.llvm::DataLayout" }
11 %"class.llvm::iplist" = type { %"struct.llvm::ilist_traits", %"class.llvm::GlobalVariable"* }
12 %"struct.llvm::ilist_traits" = type { %"class.llvm::ilist_node" }
13 %"class.llvm::ilist_node" = type { %"class.llvm::ilist_half_node", %"class.llvm::GlobalVariable"* }
14 %"class.llvm::ilist_half_node" = type { %"class.llvm::GlobalVariable"* }
15 %"class.llvm::GlobalVariable" = type { %"class.llvm::GlobalObject", %"class.llvm::ilist_node", i8 }
16 %"class.llvm::GlobalObject" = type { %"class.llvm::GlobalValue", %"class.std::basic_string", %"class.llvm::Comdat"* }
17 %"class.llvm::GlobalValue" = type { %"class.llvm::Constant", i32, %"class.llvm::Module"* }
18 %"class.llvm::Constant" = type { %"class.llvm::User" }
19 %"class.llvm::User" = type { %"class.llvm::Value.base", i32, %"class.llvm::Use"* }
20 %"class.llvm::Value.base" = type <{ i32 (...)**, %"class.llvm::Type"*, %"class.llvm::Use"*, %"class.llvm::StringMapEntry"*, i8, i8, i16 }>
21 %"class.llvm::Type" = type { %"class.llvm::LLVMContext"*, i32, i32, %"class.llvm::Type"** }
22 %"class.llvm::StringMapEntry" = type opaque
23 %"class.llvm::Use" = type { %"class.llvm::Value"*, %"class.llvm::Use"*, %"class.llvm::PointerIntPair" }
24 %"class.llvm::Value" = type { i32 (...)**, %"class.llvm::Type"*, %"class.llvm::Use"*, %"class.llvm::StringMapEntry"*, i8, i8, i16 }
25 %"class.llvm::PointerIntPair" = type { i64 }
26 %"class.llvm::Comdat" = type { %"class.llvm::StringMapEntry.43"*, i32 }
27 %"class.llvm::StringMapEntry.43" = type opaque
28 %"class.llvm::iplist.0" = type { %"struct.llvm::ilist_traits.1", %"class.llvm::Function"* }
29 %"struct.llvm::ilist_traits.1" = type { %"class.llvm::ilist_node.7" }
30 %"class.llvm::ilist_node.7" = type { %"class.llvm::ilist_half_node.8", %"class.llvm::Function"* }
31 %"class.llvm::ilist_half_node.8" = type { %"class.llvm::Function"* }
32 %"class.llvm::Function" = type { %"class.llvm::GlobalObject", %"class.llvm::ilist_node.7", %"class.llvm::iplist.44", %"class.llvm::iplist.52", %"class.llvm::ValueSymbolTable"*, %"class.llvm::AttributeSet" }
33 %"class.llvm::iplist.44" = type { %"struct.llvm::ilist_traits.45", %"class.llvm::BasicBlock"* }
34 %"struct.llvm::ilist_traits.45" = type { %"class.llvm::ilist_half_node.51" }
35 %"class.llvm::ilist_half_node.51" = type { %"class.llvm::BasicBlock"* }
36 %"class.llvm::BasicBlock" = type { %"class.llvm::Value.base", %"class.llvm::ilist_node.61", %"class.llvm::iplist.62", %"class.llvm::Function"* }
37 %"class.llvm::ilist_node.61" = type { %"class.llvm::ilist_half_node.51", %"class.llvm::BasicBlock"* }
38 %"class.llvm::iplist.62" = type { %"struct.llvm::ilist_traits.63", %"class.llvm::Instruction"* }
39 %"struct.llvm::ilist_traits.63" = type { %"class.llvm::ilist_half_node.69" }
40 %"class.llvm::ilist_half_node.69" = type { %"class.llvm::Instruction"* }
41 %"class.llvm::Instruction" = type { %"class.llvm::User", %"class.llvm::ilist_node.70", %"class.llvm::BasicBlock"*, %"class.llvm::DebugLoc" }
42 %"class.llvm::ilist_node.70" = type { %"class.llvm::ilist_half_node.69", %"class.llvm::Instruction"* }
43 %"class.llvm::DebugLoc" = type { i32, i32 }
44 %"class.llvm::iplist.52" = type { %"struct.llvm::ilist_traits.53", %"class.llvm::Argument"* }
45 %"struct.llvm::ilist_traits.53" = type { %"class.llvm::ilist_half_node.59" }
46 %"class.llvm::ilist_half_node.59" = type { %"class.llvm::Argument"* }
47 %"class.llvm::Argument" = type { %"class.llvm::Value.base", %"class.llvm::ilist_node.60", %"class.llvm::Function"* }
48 %"class.llvm::ilist_node.60" = type { %"class.llvm::ilist_half_node.59", %"class.llvm::Argument"* }
49 %"class.llvm::AttributeSet" = type { %"class.llvm::AttributeSetImpl"* }
50 %"class.llvm::AttributeSetImpl" = type opaque
51 %"class.llvm::iplist.9" = type { %"struct.llvm::ilist_traits.10", %"class.llvm::GlobalAlias"* }
52 %"struct.llvm::ilist_traits.10" = type { %"class.llvm::ilist_node.16" }
53 %"class.llvm::ilist_node.16" = type { %"class.llvm::ilist_half_node.17", %"class.llvm::GlobalAlias"* }
54 %"class.llvm::ilist_half_node.17" = type { %"class.llvm::GlobalAlias"* }
55 %"class.llvm::GlobalAlias" = type { %"class.llvm::GlobalValue", %"class.llvm::ilist_node.16" }
56 %"struct.llvm::ilist" = type { %"class.llvm::iplist.18" }
57 %"class.llvm::iplist.18" = type { %"struct.llvm::ilist_traits.19", %"class.llvm::NamedMDNode"* }
58 %"struct.llvm::ilist_traits.19" = type { %"class.llvm::ilist_node.24" }
59 %"class.llvm::ilist_node.24" = type { %"class.llvm::ilist_half_node.25", %"class.llvm::NamedMDNode"* }
60 %"class.llvm::ilist_half_node.25" = type { %"class.llvm::NamedMDNode"* }
61 %"class.llvm::NamedMDNode" = type { %"class.llvm::ilist_node.24", %"class.std::basic_string", %"class.llvm::Module"*, i8* }
62 %"class.llvm::ValueSymbolTable" = type opaque
63 %"class.llvm::StringMap" = type { %"class.llvm::StringMapImpl", %"class.llvm::MallocAllocator" }
64 %"class.llvm::StringMapImpl" = type { %"class.llvm::StringMapEntryBase"**, i32, i32, i32, i32 }
65 %"class.llvm::StringMapEntryBase" = type { i32 }
66 %"class.llvm::MallocAllocator" = type { i8 }
67 %"class.std::unique_ptr" = type { %"class.std::tuple" }
68 %"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
69 %"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.28" }
70 %"struct.std::_Head_base.28" = type { %"class.llvm::GVMaterializer"* }
71 %"class.llvm::GVMaterializer" = type opaque
72 %"class.llvm::RandomNumberGenerator" = type opaque
73 %"class.std::basic_string" = type { %"struct.std::basic_string, std::allocator >::_Alloc_hider" }
74 %"struct.std::basic_string, std::allocator >::_Alloc_hider" = type { i8* }
75 %"class.llvm::DataLayout" = type { i8, i32, i32, [4 x i8], %"class.llvm::SmallVector", %"class.llvm::SmallVector.29", %"class.llvm::SmallVector.36", i8* }
76 %"class.llvm::SmallVector" = type { %"class.llvm::SmallVectorImpl.base", %"struct.llvm::SmallVectorStorage" }
77 %"class.llvm::SmallVectorImpl.base" = type { %"class.llvm::SmallVectorTemplateBase.base" }
78 %"class.llvm::SmallVectorTemplateBase.base" = type { %"class.llvm::SmallVectorTemplateCommon.base" }
79 %"class.llvm::SmallVectorTemplateCommon.base" = type <{ %"class.llvm::SmallVectorBase", %"struct.llvm::AlignedCharArrayUnion" }>
80 %"class.llvm::SmallVectorBase" = type { i8*, i8*, i8* }
81 %"struct.llvm::AlignedCharArrayUnion" = type { %"struct.llvm::AlignedCharArray" }
82 %"struct.llvm::AlignedCharArray" = type { [1 x i8] }
83 %"struct.llvm::SmallVectorStorage" = type { [7 x %"struct.llvm::AlignedCharArrayUnion"] }
84 %"class.llvm::SmallVector.29" = type { %"class.llvm::SmallVectorImpl.30", %"struct.llvm::SmallVectorStorage.35" }
85 %"class.llvm::SmallVectorImpl.30" = type { %"class.llvm::SmallVectorTemplateBase.31" }
86 %"class.llvm::SmallVectorTemplateBase.31" = type { %"class.llvm::SmallVectorTemplateCommon.32" }
87 %"class.llvm::SmallVectorTemplateCommon.32" = type { %"class.llvm::SmallVectorBase", %"struct.llvm::AlignedCharArrayUnion.33" }
88 %"struct.llvm::AlignedCharArrayUnion.33" = type { %"struct.llvm::AlignedCharArray.34" }
89 %"struct.llvm::AlignedCharArray.34" = type { [8 x i8] }
90 %"struct.llvm::SmallVectorStorage.35" = type { [15 x %"struct.llvm::AlignedCharArrayUnion.33"] }
91 %"class.llvm::SmallVector.36" = type { %"class.llvm::SmallVectorImpl.37", %"struct.llvm::SmallVectorStorage.42" }
92 %"class.llvm::SmallVectorImpl.37" = type { %"class.llvm::SmallVectorTemplateBase.38" }
93 %"class.llvm::SmallVectorTemplateBase.38" = type { %"class.llvm::SmallVectorTemplateCommon.39" }
94 %"class.llvm::SmallVectorTemplateCommon.39" = type { %"class.llvm::SmallVectorBase", %"struct.llvm::AlignedCharArrayUnion.40" }
95 %"struct.llvm::AlignedCharArrayUnion.40" = type { %"struct.llvm::AlignedCharArray.41" }
96 %"struct.llvm::AlignedCharArray.41" = type { [16 x i8] }
97 %"struct.llvm::SmallVectorStorage.42" = type { [7 x %"struct.llvm::AlignedCharArrayUnion.40"] }
98 %"class.llvm::SMDiagnostic" = type { %"class.llvm::SourceMgr"*, %"class.llvm::SMLoc", %"class.std::basic_string", i32, i32, i32, %"class.std::basic_string", %"class.std::basic_string", %"class.std::vector.79", %"class.llvm::SmallVector.84" }
99 %"class.llvm::SourceMgr" = type { %"class.std::vector", %"class.std::vector.74", i8*, void (%"class.llvm::SMDiagnostic"*, i8*)*, i8* }
100 %"class.std::vector" = type { %"struct.std::_Vector_base" }
101 %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base >::_Vector_impl" }
102 %"struct.std::_Vector_base >::_Vector_impl" = type { %"struct.llvm::SourceMgr::SrcBuffer"*, %"struct.llvm::SourceMgr::SrcBuffer"*, %"struct.llvm::SourceMgr::SrcBuffer"* }
103 %"struct.llvm::SourceMgr::SrcBuffer" = type { %"class.llvm::MemoryBuffer"*, %"class.llvm::SMLoc" }
104 %"class.llvm::MemoryBuffer" = type { i32 (...)**, i8*, i8* }
105 %"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
106 %"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base, std::allocator > >::_Vector_impl" }
107 %"struct.std::_Vector_base, std::allocator > >::_Vector_impl" = type { %"class.std::basic_string"*, %"class.std::basic_string"*, %"class.std::basic_string"* }
108 %"class.llvm::SMLoc" = type { i8* }
109 %"class.std::vector.79" = type { %"struct.std::_Vector_base.80" }
110 %"struct.std::_Vector_base.80" = type { %"struct.std::_Vector_base, std::allocator > >::_Vector_impl" }
111 %"struct.std::_Vector_base, std::allocator > >::_Vector_impl" = type { %"struct.std::pair"*, %"struct.std::pair"*, %"struct.std::pair"* }
112 %"struct.std::pair" = type { i32, i32 }
113 %"class.llvm::SmallVector.84" = type { %"class.llvm::SmallVectorImpl.85", %"struct.llvm::SmallVectorStorage.90" }
114 %"class.llvm::SmallVectorImpl.85" = type { %"class.llvm::SmallVectorTemplateBase.86" }
115 %"class.llvm::SmallVectorTemplateBase.86" = type { %"class.llvm::SmallVectorTemplateCommon.87" }
116 %"class.llvm::SmallVectorTemplateCommon.87" = type { %"class.llvm::SmallVectorBase", %"struct.llvm::AlignedCharArrayUnion.88" }
117 %"struct.llvm::AlignedCharArrayUnion.88" = type { %"struct.llvm::AlignedCharArray.89" }
118 %"struct.llvm::AlignedCharArray.89" = type { [24 x i8] }
119 %"struct.llvm::SmallVectorStorage.90" = type { [3 x %"struct.llvm::AlignedCharArrayUnion.88"] }
120 %"class.llvm::LLVMContext" = type { %"class.llvm::LLVMContextImpl"* }
121 %"class.llvm::LLVMContextImpl" = type opaque
122 %"class.std::allocator" = type { i8 }
123 %"class.llvm::ErrorOr.109" = type { %union.anon.110, i8, [7 x i8] }
124 %union.anon.110 = type { %"struct.llvm::AlignedCharArrayUnion.93" }
125 %"struct.llvm::AlignedCharArrayUnion.93" = type { %"struct.llvm::AlignedCharArray.94" }
126 %"struct.llvm::AlignedCharArray.94" = type { [16 x i8] }
127 %"class.llvm::ErrorOr" = type { %union.anon, i8, [7 x i8] }
128 %union.anon = type { %"struct.llvm::AlignedCharArrayUnion.93" }
129 %"class.std::error_category" = type { i32 (...)** }
130 %"struct.std::basic_string, std::allocator >::_Rep" = type { %"struct.std::basic_string, std::allocator >::_Rep_base" }
131 %"struct.std::basic_string, std::allocator >::_Rep_base" = type { i64, i64, i32 }
132 %"class.llvm::SMFixIt" = type { %"class.llvm::SMRange", %"class.std::basic_string" }
133 %"class.llvm::SMRange" = type { %"class.llvm::SMLoc", %"class.llvm::SMLoc" }
134 %"struct.llvm::NamedRegionTimer" = type { %"class.llvm::TimeRegion" }
135 %"class.llvm::TimeRegion" = type { %"class.llvm::Timer"* }
136 %"class.llvm::Timer" = type { %"class.llvm::TimeRecord", %"class.std::basic_string", i8, %"class.llvm::TimerGroup"*, %"class.llvm::Timer"**, %"class.llvm::Timer"* }
137 %"class.llvm::TimeRecord" = type { double, double, double, i64 }
138 %"class.llvm::TimerGroup" = type { %"class.std::basic_string", %"class.llvm::Timer"*, %"class.std::vector.103", %"class.llvm::TimerGroup"**, %"class.llvm::TimerGroup"* }
139 %"class.std::vector.103" = type { %"struct.std::_Vector_base.104" }
140 %"struct.std::_Vector_base.104" = type { %"struct.std::_Vector_base >, std::allocator > > >::_Vector_impl" }
141 %"struct.std::_Vector_base >, std::allocator > > >::_Vector_impl" = type { %"struct.std::pair.108"*, %"struct.std::pair.108"*, %"struct.std::pair.108"* }
142 %"struct.std::pair.108" = type opaque
143 %struct.LLVMOpaqueContext = type opaque
144 %struct.LLVMOpaqueMemoryBuffer = type opaque
145 %struct.LLVMOpaqueModule = type opaque
146 %"class.llvm::raw_string_ostream" = type { %"class.llvm::raw_ostream.base", %"class.std::basic_string"* }
147 %"class.llvm::raw_ostream.base" = type <{ i32 (...)**, i8*, i8*, i8*, i32 }>
148 %"class.llvm::raw_ostream" = type { i32 (...)**, i8*, i8*, i8*, i32 }
149
150 @.str = private unnamed_addr constant [28 x i8] c"Could not open input file: \00", align 1
151 @.str1 = private unnamed_addr constant [54 x i8] c"!HasError && \22Cannot get value when an error exists!\22\00", align 1
152 @.str2 = private unnamed_addr constant [61 x i8] c"/home/wschmidt/llvm/llvm-test/include/llvm/Support/ErrorOr.h\00", align 1
153 @__PRETTY_FUNCTION__._ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv = private unnamed_addr constant [206 x i8] c"storage_type *llvm::ErrorOr > >::getStorage() [T = std::unique_ptr >]\00", align 1
154 @_ZNSs4_Rep20_S_empty_rep_storageE = external global [0 x i64]
155
156 declare void @_ZN4llvm12MemoryBuffer14getFileOrSTDINENS_9StringRefEl(%"class.llvm::ErrorOr"* sret, [2 x i64], i64) #1
157
158 declare void @_ZN4llvm16NamedRegionTimerC1ENS_9StringRefES1_b(%"struct.llvm::NamedRegionTimer"*, [2 x i64], [2 x i64], i1 zeroext) #1
159
160 ; Function Attrs: nounwind
161 define %"class.llvm::Module"* @_ZN4llvm11ParseIRFileERKSsRNS_12SMDiagnosticERNS_11LLVMContextE(%"class.std::basic_string"* nocapture readonly dereferenceable(8) %Filename, %"class.llvm::SMDiagnostic"* dereferenceable(200) %Err, %"class.llvm::LLVMContext"* dereferenceable(8) %Context) #0 {
162 entry:
163 ; CHECK: .globl _ZN4llvm11ParseIRFileERKSsRNS_12SMDiagnosticERNS_11LLVMContextE
164 ; CHECK: bctrl
165 ; CHECK: ld 2, 24(1)
166 ; CHECK: addis [[REG:[0-9]+]], 2, .L.str@toc@ha
167 ; CHECK: addi {{[0-9]+}}, [[REG]], .L.str@toc@l
168 ; CHECK: bl _ZNSs6insertEmPKcm
169 %.atomicdst.i.i.i.i.i46 = alloca i32, align 4
170 %ref.tmp.i.i47 = alloca %"class.std::allocator", align 1
171 %.atomicdst.i.i.i.i.i = alloca i32, align 4
172 %ref.tmp.i.i = alloca %"class.std::allocator", align 1
173 %ref.tmp.i.i2.i = alloca %"class.std::allocator", align 1
174 %ref.tmp.i.i.i = alloca %"class.std::allocator", align 1
175 %FileOrErr = alloca %"class.llvm::ErrorOr", align 8
176 %ref.tmp = alloca %"class.llvm::SMDiagnostic", align 8
177 %ref.tmp5 = alloca %"class.std::basic_string", align 8
178 %_M_p.i.i.i = getelementptr inbounds %"class.std::basic_string"* %Filename, i64 0, i32 0, i32 0
179 %0 = load i8** %_M_p.i.i.i, align 8, !tbaa !1
180 %1 = ptrtoint i8* %0 to i64
181 %arrayidx.i.i.i = getelementptr inbounds i8* %0, i64 -24
182 %_M_length.i.i = bitcast i8* %arrayidx.i.i.i to i64*
183 %2 = load i64* %_M_length.i.i, align 8, !tbaa !7
184 %.fca.0.insert18 = insertvalue [2 x i64] undef, i64 %1, 0
185 %.fca.1.insert21 = insertvalue [2 x i64] %.fca.0.insert18, i64 %2, 1
186 call void @_ZN4llvm12MemoryBuffer14getFileOrSTDINENS_9StringRefEl(%"class.llvm::ErrorOr"* sret %FileOrErr, [2 x i64] %.fca.1.insert21, i64 -1) #3
187 %HasError.i24 = getelementptr inbounds %"class.llvm::ErrorOr"* %FileOrErr, i64 0, i32 1
188 %bf.load.i25 = load i8* %HasError.i24, align 8
189 %3 = and i8 %bf.load.i25, 1
190 %bf.cast.i26 = icmp eq i8 %3, 0
191 br i1 %bf.cast.i26, label %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE3getEv.exit, label %_ZNK4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE8getErrorEv.exit
192
193 _ZNK4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE8getErrorEv.exit: ; preds = %entry
194 %retval.sroa.0.0..sroa_cast.i = bitcast %"class.llvm::ErrorOr"* %FileOrErr to i64*
195 %retval.sroa.0.0.copyload.i = load i64* %retval.sroa.0.0..sroa_cast.i, align 8
196 %retval.sroa.3.0..sroa_idx.i = getelementptr inbounds %"class.llvm::ErrorOr"* %FileOrErr, i64 0, i32 0, i32 0, i32 0, i32 0, i64 8
197 %retval.sroa.3.0..sroa_cast.i = bitcast i8* %retval.sroa.3.0..sroa_idx.i to i64*
198 %retval.sroa.3.0.copyload.i = load i64* %retval.sroa.3.0..sroa_cast.i, align 8
199 %phitmp = trunc i64 %retval.sroa.0.0.copyload.i to i32
200 %cmp.i = icmp eq i32 %phitmp, 0
201 br i1 %cmp.i, label %cond.false.i.i, label %if.then
202
203 if.then: ; preds = %_ZNK4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE8getErrorEv.exit
204 %.c = inttoptr i64 %retval.sroa.3.0.copyload.i to %"class.std::error_category"*
205 %4 = load i8** %_M_p.i.i.i, align 8, !tbaa !1
206 %arrayidx.i.i.i30 = getelementptr inbounds i8* %4, i64 -24
207 %_M_length.i.i31 = bitcast i8* %arrayidx.i.i.i30 to i64*
208 %5 = load i64* %_M_length.i.i31, align 8, !tbaa !7
209 %6 = inttoptr i64 %retval.sroa.3.0.copyload.i to void (%"class.std::basic_string"*, %"class.std::error_category"*, i32)***
210 %vtable.i = load void (%"class.std::basic_string"*, %"class.std::error_category"*, i32)*** %6, align 8, !tbaa !11
211 %vfn.i = getelementptr inbounds void (%"class.std::basic_string"*, %"class.std::error_category"*, i32)** %vtable.i, i64 3
212 %7 = load void (%"class.std::basic_string"*, %"class.std::error_category"*, i32)** %vfn.i, align 8
213 call void %7(%"class.std::basic_string"* sret %ref.tmp5, %"class.std::error_category"* %.c, i32 signext %phitmp) #3
214 %call2.i.i = call dereferenceable(8) %"class.std::basic_string"* @_ZNSs6insertEmPKcm(%"class.std::basic_string"* %ref.tmp5, i64 0, i8* getelementptr inbounds ([28 x i8]* @.str, i64 0, i64 0), i64 27) #3
215 %_M_p2.i.i.i.i = getelementptr inbounds %"class.std::basic_string"* %call2.i.i, i64 0, i32 0, i32 0
216 %8 = load i8** %_M_p2.i.i.i.i, align 8, !tbaa !13
217 store i8* bitcast (i64* getelementptr inbounds ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE, i64 0, i64 3) to i8*), i8** %_M_p2.i.i.i.i, align 8, !tbaa !1
218 %arrayidx.i.i.i36 = getelementptr inbounds i8* %8, i64 -24
219 %_M_length.i.i37 = bitcast i8* %arrayidx.i.i.i36 to i64*
220 %9 = load i64* %_M_length.i.i37, align 8, !tbaa !7
221 %Filename.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 2
222 %10 = getelementptr inbounds %"class.std::allocator"* %ref.tmp.i.i2.i, i64 0, i32 0
223 %11 = bitcast %"class.llvm::SMDiagnostic"* %ref.tmp to i8*
224 call void @llvm.memset.p0i8.i64(i8* %11, i8 0, i64 16, i32 8, i1 false) #3
225 call void @llvm.lifetime.start(i64 1, i8* %10) #3
226 %tobool.i.i4.i = icmp eq i8* %4, null
227 br i1 %tobool.i.i4.i, label %if.then.i.i6.i, label %if.end.i.i8.i
228
229 if.then.i.i6.i: ; preds = %if.then
230 %_M_p.i.i.i.i.i.i5.i = getelementptr inbounds %"class.std::basic_string"* %Filename.i, i64 0, i32 0, i32 0
231 store i8* bitcast (i64* getelementptr inbounds ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE, i64 0, i64 3) to i8*), i8** %_M_p.i.i.i.i.i.i5.i, align 8, !tbaa !13
232 br label %_ZNK4llvm9StringRefcvSsEv.exit9.i
233
234 if.end.i.i8.i: ; preds = %if.then
235 call void @_ZNSsC1EPKcmRKSaIcE(%"class.std::basic_string"* %Filename.i, i8* %4, i64 %5, %"class.std::allocator"* dereferenceable(1) %ref.tmp.i.i2.i) #3
236 br label %_ZNK4llvm9StringRefcvSsEv.exit9.i
237
238 _ZNK4llvm9StringRefcvSsEv.exit9.i: ; preds = %if.end.i.i8.i, %if.then.i.i6.i
239 call void @llvm.lifetime.end(i64 1, i8* %10) #3
240 %LineNo.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 3
241 store i32 -1, i32* %LineNo.i, align 8, !tbaa !14
242 %ColumnNo.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 4
243 store i32 -1, i32* %ColumnNo.i, align 4, !tbaa !21
244 %Kind.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 5
245 store i32 0, i32* %Kind.i, align 8, !tbaa !22
246 %Message.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 6
247 %12 = getelementptr inbounds %"class.std::allocator"* %ref.tmp.i.i.i, i64 0, i32 0
248 call void @llvm.lifetime.start(i64 1, i8* %12) #3
249 %tobool.i.i.i = icmp eq i8* %8, null
250 br i1 %tobool.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i
251
252 if.then.i.i.i: ; preds = %_ZNK4llvm9StringRefcvSsEv.exit9.i
253 %_M_p.i.i.i.i.i.i.i = getelementptr inbounds %"class.std::basic_string"* %Message.i, i64 0, i32 0, i32 0
254 store i8* bitcast (i64* getelementptr inbounds ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE, i64 0, i64 3) to i8*), i8** %_M_p.i.i.i.i.i.i.i, align 8, !tbaa !13
255 br label %_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit
256
257 if.end.i.i.i: ; preds = %_ZNK4llvm9StringRefcvSsEv.exit9.i
258 call void @_ZNSsC1EPKcmRKSaIcE(%"class.std::basic_string"* %Message.i, i8* %8, i64 %9, %"class.std::allocator"* dereferenceable(1) %ref.tmp.i.i.i) #3
259 br label %_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit
260
261 _ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit: ; preds = %if.then.i.i.i, %if.end.i.i.i
262 call void @llvm.lifetime.end(i64 1, i8* %12) #3
263 %_M_p.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 7, i32 0, i32 0
264 store i8* bitcast (i64* getelementptr inbounds ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE, i64 0, i64 3) to i8*), i8** %_M_p.i.i.i.i.i, align 8, !tbaa !13
265 %Ranges.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 8
266 %13 = bitcast %"class.std::vector.79"* %Ranges.i to i8*
267 call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 24, i32 8, i1 false) #3
268 %14 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i64 0
269 %BeginX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 0
270 store i8* %14, i8** %BeginX.i.i.i.i.i.i, align 8, !tbaa !23
271 %EndX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 1
272 store i8* %14, i8** %EndX.i.i.i.i.i.i, align 8, !tbaa !25
273 %CapacityX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0, i32 0, i32 0, i32 0, i32 2
274 %add.ptr.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0, i64 96
275 store i8* %add.ptr.i.i.i.i.i.i, i8** %CapacityX.i.i.i.i.i.i, align 8, !tbaa !26
276 %15 = bitcast %"class.llvm::SMDiagnostic"* %Err to i8*
277 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %15, i8* %11, i64 16, i32 8, i1 false) #3
278 %Filename.i38 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 2
279 call void @_ZNSs4swapERSs(%"class.std::basic_string"* %Filename.i38, %"class.std::basic_string"* dereferenceable(8) %Filename.i) #3
280 %LineNo.i39 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 3
281 %16 = bitcast i32* %LineNo.i39 to i8*
282 %17 = bitcast i32* %LineNo.i to i8*
283 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %16, i8* %17, i64 12, i32 4, i1 false) #3
284 %Message.i40 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 6
285 call void @_ZNSs4swapERSs(%"class.std::basic_string"* %Message.i40, %"class.std::basic_string"* dereferenceable(8) %Message.i) #3
286 %LineContents.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 7
287 %LineContents7.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 7
288 call void @_ZNSs4swapERSs(%"class.std::basic_string"* %LineContents.i, %"class.std::basic_string"* dereferenceable(8) %LineContents7.i) #3
289 %Ranges.i41 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 8
290 %_M_start.i7.i.i.i = getelementptr inbounds %"class.std::vector.79"* %Ranges.i41, i64 0, i32 0, i32 0, i32 0
291 %18 = load %"struct.std::pair"** %_M_start.i7.i.i.i, align 8, !tbaa !27
292 %_M_finish.i9.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 8, i32 0, i32 0, i32 1
293 %_M_end_of_storage.i11.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 8, i32 0, i32 0, i32 2
294 %_M_start2.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 8, i32 0, i32 0, i32 0
295 %19 = bitcast %"class.std::vector.79"* %Ranges.i41 to i8*
296 call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 16, i32 8, i1 false) #3
297 %20 = load %"struct.std::pair"** %_M_start2.i.i.i.i, align 8, !tbaa !27
298 store %"struct.std::pair"* %20, %"struct.std::pair"** %_M_start.i7.i.i.i, align 8, !tbaa !27
299 store %"struct.std::pair"* null, %"struct.std::pair"** %_M_start2.i.i.i.i, align 8, !tbaa !27
300 %_M_finish3.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 8, i32 0, i32 0, i32 1
301 %21 = load %"struct.std::pair"** %_M_finish3.i.i.i.i, align 8, !tbaa !27
302 store %"struct.std::pair"* %21, %"struct.std::pair"** %_M_finish.i9.i.i.i, align 8, !tbaa !27
303 store %"struct.std::pair"* null, %"struct.std::pair"** %_M_finish3.i.i.i.i, align 8, !tbaa !27
304 %_M_end_of_storage4.i.i.i.i = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 8, i32 0, i32 0, i32 2
305 %22 = load %"struct.std::pair"** %_M_end_of_storage4.i.i.i.i, align 8, !tbaa !27
306 store %"struct.std::pair"* %22, %"struct.std::pair"** %_M_end_of_storage.i11.i.i.i, align 8, !tbaa !27
307 store %"struct.std::pair"* null, %"struct.std::pair"** %_M_end_of_storage4.i.i.i.i, align 8, !tbaa !27
308 %tobool.i.i.i.i.i.i = icmp eq %"struct.std::pair"* %18, null
309 br i1 %tobool.i.i.i.i.i.i, label %_ZN4llvm12SMDiagnosticaSEOS0_.exit, label %if.then.i.i.i.i.i.i
310
311 if.then.i.i.i.i.i.i: ; preds = %_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit
312 %23 = bitcast %"struct.std::pair"* %18 to i8*
313 call void @_ZdlPv(i8* %23) #3
314 br label %_ZN4llvm12SMDiagnosticaSEOS0_.exit
315
316 _ZN4llvm12SMDiagnosticaSEOS0_.exit: ; preds = %_ZN4llvm12SMDiagnosticC2ENS_9StringRefENS_9SourceMgr8DiagKindES1_.exit, %if.then.i.i.i.i.i.i
317 %24 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %Err, i64 0, i32 9, i32 0
318 %25 = getelementptr inbounds %"class.llvm::SMDiagnostic"* %ref.tmp, i64 0, i32 9, i32 0
319 %call2.i.i42 = call dereferenceable(48) %"class.llvm::SmallVectorImpl.85"* @_ZN4llvm15SmallVectorImplINS_7SMFixItEEaSEOS2_(%"class.llvm::SmallVectorImpl.85"* %24, %"class.llvm::SmallVectorImpl.85"* dereferenceable(48) %25) #3
320 call void @_ZN4llvm12SMDiagnosticD2Ev(%"class.llvm::SMDiagnostic"* %ref.tmp) #3
321 %26 = getelementptr inbounds %"class.std::allocator"* %ref.tmp.i.i, i64 0, i32 0
322 call void @llvm.lifetime.start(i64 1, i8* %26) #3
323 %27 = bitcast i8* %arrayidx.i.i.i36 to %"struct.std::basic_string, std::allocator >::_Rep"*
324 %cmp.i.i.i = icmp eq i8* %arrayidx.i.i.i36, bitcast ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*)
325 br i1 %cmp.i.i.i, label %_ZNSsD1Ev.exit, label %if.then.i.i.i45, !prof !28
326
327 if.then.i.i.i45: ; preds = %_ZN4llvm12SMDiagnosticaSEOS0_.exit
328 %_M_refcount.i.i.i = getelementptr inbounds i8* %8, i64 -8
329 %28 = bitcast i8* %_M_refcount.i.i.i to i32*
330 br i1 icmp ne (i8* bitcast (i32 (i32*, void (i8*)*)* @__pthread_key_create to i8*), i8* null), label %if.then.i.i.i.i, label %if.else.i.i.i.i
331
332 if.then.i.i.i.i: ; preds = %if.then.i.i.i45
333 %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast = bitcast i32* %.atomicdst.i.i.i.i.i to i8*
334 call void @llvm.lifetime.start(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
335 %29 = atomicrmw volatile add i32* %28, i32 -1 acq_rel
336 store i32 %29, i32* %.atomicdst.i.i.i.i.i, align 4
337 %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i = load volatile i32* %.atomicdst.i.i.i.i.i, align 4
338 call void @llvm.lifetime.end(i64 4, i8* %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
339 br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i
340
341 if.else.i.i.i.i: ; preds = %if.then.i.i.i45
342 %30 = load i32* %28, align 4, !tbaa !29
343 %add.i.i.i.i.i = add nsw i32 %30, -1
344 store i32 %add.i.i.i.i.i, i32* %28, align 4, !tbaa !29
345 br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i
346
347 _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i: ; preds = %if.else.i.i.i.i, %if.then.i.i.i.i
348 %retval.0.i.i.i.i = phi i32 [ %.atomicdst.i.i.i.i.i.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i, %if.then.i.i.i.i ], [ %30, %if.else.i.i.i.i ]
349 %cmp3.i.i.i = icmp slt i32 %retval.0.i.i.i.i, 1
350 br i1 %cmp3.i.i.i, label %if.then4.i.i.i, label %_ZNSsD1Ev.exit
351
352 if.then4.i.i.i: ; preds = %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i
353 call void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string, std::allocator >::_Rep"* %27, %"class.std::allocator"* dereferenceable(1) %ref.tmp.i.i) #3
354 br label %_ZNSsD1Ev.exit
355
356 _ZNSsD1Ev.exit: ; preds = %_ZN4llvm12SMDiagnosticaSEOS0_.exit, %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i, %if.then4.i.i.i
357 call void @llvm.lifetime.end(i64 1, i8* %26) #3
358 %31 = getelementptr inbounds %"class.std::allocator"* %ref.tmp.i.i47, i64 0, i32 0
359 call void @llvm.lifetime.start(i64 1, i8* %31) #3
360 %_M_p.i.i.i.i48 = getelementptr inbounds %"class.std::basic_string"* %ref.tmp5, i64 0, i32 0, i32 0
361 %32 = load i8** %_M_p.i.i.i.i48, align 8, !tbaa !1
362 %arrayidx.i.i.i49 = getelementptr inbounds i8* %32, i64 -24
363 %33 = bitcast i8* %arrayidx.i.i.i49 to %"struct.std::basic_string, std::allocator >::_Rep"*
364 %cmp.i.i.i50 = icmp eq i8* %arrayidx.i.i.i49, bitcast ([0 x i64]* @_ZNSs4_Rep20_S_empty_rep_storageE to i8*)
365 br i1 %cmp.i.i.i50, label %_ZNSsD1Ev.exit62, label %if.then.i.i.i52, !prof !28
366
367 if.then.i.i.i52: ; preds = %_ZNSsD1Ev.exit
368 %_M_refcount.i.i.i51 = getelementptr inbounds i8* %32, i64 -8
369 %34 = bitcast i8* %_M_refcount.i.i.i51 to i32*
370 br i1 icmp ne (i8* bitcast (i32 (i32*, void (i8*)*)* @__pthread_key_create to i8*), i8* null), label %if.then.i.i.i.i55, label %if.else.i.i.i.i57
371
372 if.then.i.i.i.i55: ; preds = %if.then.i.i.i52
373 %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast = bitcast i32* %.atomicdst.i.i.i.i.i46 to i8*
374 call void @llvm.lifetime.start(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
375 %35 = atomicrmw volatile add i32* %34, i32 -1 acq_rel
376 store i32 %35, i32* %.atomicdst.i.i.i.i.i46, align 4
377 %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i54 = load volatile i32* %.atomicdst.i.i.i.i.i46, align 4
378 call void @llvm.lifetime.end(i64 4, i8* %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..sroa_cast)
379 br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60
380
381 if.else.i.i.i.i57: ; preds = %if.then.i.i.i52
382 %36 = load i32* %34, align 4, !tbaa !29
383 %add.i.i.i.i.i56 = add nsw i32 %36, -1
384 store i32 %add.i.i.i.i.i56, i32* %34, align 4, !tbaa !29
385 br label %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60
386
387 _ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60: ; preds = %if.else.i.i.i.i57, %if.then.i.i.i.i55
388 %retval.0.i.i.i.i58 = phi i32 [ %.atomicdst.i.i.i.i.i46.0..atomicdst.i.i.i.i.0..atomicdst.i.i.i.0..atomicdst.i.i.0..atomicdst.i.0..atomicdst.0..atomicdst.0..i.i.i.i.i54, %if.then.i.i.i.i55 ], [ %36, %if.else.i.i.i.i57 ]
389 %cmp3.i.i.i59 = icmp slt i32 %retval.0.i.i.i.i58, 1
390 br i1 %cmp3.i.i.i59, label %if.then4.i.i.i61, label %_ZNSsD1Ev.exit62
391
392 if.then4.i.i.i61: ; preds = %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60
393 call void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string, std::allocator >::_Rep"* %33, %"class.std::allocator"* dereferenceable(1) %ref.tmp.i.i47) #3
394 br label %_ZNSsD1Ev.exit62
395
396 _ZNSsD1Ev.exit62: ; preds = %_ZNSsD1Ev.exit, %_ZN9__gnu_cxxL27__exchange_and_add_dispatchEPii.exit.i.i.i60, %if.then4.i.i.i61
397 call void @llvm.lifetime.end(i64 1, i8* %31) #3
398 br label %cleanup
399
400 cond.false.i.i: ; preds = %_ZNK4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE8getErrorEv.exit
401 call void @__assert_fail(i8* getelementptr inbounds ([54 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([61 x i8]* @.str2, i64 0, i64 0), i32 zeroext 242, i8* getelementptr inbounds ([206 x i8]* @__PRETTY_FUNCTION__._ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv, i64 0, i64 0)) #7
402 unreachable
403
404 _ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE3getEv.exit: ; preds = %entry
405 %_M_head_impl.i.i.i.i.i = bitcast %"class.llvm::ErrorOr"* %FileOrErr to %"class.llvm::MemoryBuffer"**
406 %37 = load %"class.llvm::MemoryBuffer"** %_M_head_impl.i.i.i.i.i, align 8, !tbaa !27
407 %call9 = call %"class.llvm::Module"* @_ZN4llvm7ParseIREPNS_12MemoryBufferERNS_12SMDiagnosticERNS_11LLVMContextE(%"class.llvm::MemoryBuffer"* %37, %"class.llvm::SMDiagnostic"* dereferenceable(200) %Err, %"class.llvm::LLVMContext"* dereferenceable(8) %Context)
408 br label %cleanup
409
410 cleanup: ; preds = %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE3getEv.exit, %_ZNSsD1Ev.exit62
411 %retval.0 = phi %"class.llvm::Module"* [ null, %_ZNSsD1Ev.exit62 ], [ %call9, %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE3getEv.exit ]
412 %bf.load.i = load i8* %HasError.i24, align 8
413 %38 = and i8 %bf.load.i, 1
414 %bf.cast.i = icmp eq i8 %38, 0
415 br i1 %bf.cast.i, label %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv.exit.i, label %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEED2Ev.exit
416
417 _ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv.exit.i: ; preds = %cleanup
418 %_M_head_impl.i.i.i.i.i.i = bitcast %"class.llvm::ErrorOr"* %FileOrErr to %"class.llvm::MemoryBuffer"**
419 %39 = load %"class.llvm::MemoryBuffer"** %_M_head_impl.i.i.i.i.i.i, align 8, !tbaa !27
420 %cmp.i.i = icmp eq %"class.llvm::MemoryBuffer"* %39, null
421 br i1 %cmp.i.i, label %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i, label %_ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i
422
423 _ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i: ; preds = %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv.exit.i
424 %40 = bitcast %"class.llvm::MemoryBuffer"* %39 to void (%"class.llvm::MemoryBuffer"*)***
425 %vtable.i.i.i = load void (%"class.llvm::MemoryBuffer"*)*** %40, align 8, !tbaa !11
426 %vfn.i.i.i = getelementptr inbounds void (%"class.llvm::MemoryBuffer"*)** %vtable.i.i.i, i64 1
427 %41 = load void (%"class.llvm::MemoryBuffer"*)** %vfn.i.i.i, align 8
428 call void %41(%"class.llvm::MemoryBuffer"* %39) #3
429 br label %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i
430
431 _ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i: ; preds = %_ZNKSt14default_deleteIN4llvm12MemoryBufferEEclEPS1_.exit.i.i, %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEE10getStorageEv.exit.i
432 store %"class.llvm::MemoryBuffer"* null, %"class.llvm::MemoryBuffer"** %_M_head_impl.i.i.i.i.i.i, align 8, !tbaa !27
433 br label %_ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEED2Ev.exit
434
435 _ZN4llvm7ErrorOrISt10unique_ptrINS_12MemoryBufferESt14default_deleteIS2_EEED2Ev.exit: ; preds = %cleanup, %_ZNSt10unique_ptrIN4llvm12MemoryBufferESt14default_deleteIS1_EED2Ev.exit.i
436 ret %"class.llvm::Module"* %retval.0
437 }
438
439 ; Function Attrs: nounwind
440 declare void @llvm.lifetime.start(i64, i8* nocapture) #3
441
442 ; Function Attrs: nounwind
443 declare void @llvm.lifetime.end(i64, i8* nocapture) #3
444
445 ; Function Attrs: noreturn nounwind
446 declare void @__assert_fail(i8*, i8*, i32 zeroext, i8*) #4
447
448 declare dereferenceable(8) %"class.std::basic_string"* @_ZNSs6insertEmPKcm(%"class.std::basic_string"*, i64, i8*, i64) #1
449
450 ; Function Attrs: nounwind
451 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #3
452
453 ; Function Attrs: nounwind
454 declare void @_ZNSs4_Rep10_M_destroyERKSaIcE(%"struct.std::basic_string, std::allocator >::_Rep"*, %"class.std::allocator"* dereferenceable(1)) #0
455
456 ; Function Attrs: nounwind
457 declare extern_weak signext i32 @__pthread_key_create(i32*, void (i8*)*) #0
458
459 ; Function Attrs: nobuiltin nounwind
460 declare void @_ZdlPv(i8*) #6
461
462 declare void @_ZNSsC1EPKcmRKSaIcE(%"class.std::basic_string"*, i8*, i64, %"class.std::allocator"* dereferenceable(1)) #1
463
464 declare hidden void @_ZN4llvm12SMDiagnosticD2Ev(%"class.llvm::SMDiagnostic"* readonly %this) unnamed_addr #2 align 2
465
466 declare dereferenceable(48) %"class.llvm::SmallVectorImpl.85"* @_ZN4llvm15SmallVectorImplINS_7SMFixItEEaSEOS2_(%"class.llvm::SmallVectorImpl.85"* %this, %"class.llvm::SmallVectorImpl.85"* dereferenceable(48) %RHS) #0 align 2
467
468 declare %"class.llvm::Module"* @_ZN4llvm7ParseIREPNS_12MemoryBufferERNS_12SMDiagnosticERNS_11LLVMContextE(%"class.llvm::MemoryBuffer"* %Buffer, %"class.llvm::SMDiagnostic"* dereferenceable(200) %Err, %"class.llvm::LLVMContext"* dereferenceable(8) %Context) #0
469
470 declare void @_ZNSs4swapERSs(%"class.std::basic_string"*, %"class.std::basic_string"* dereferenceable(8)) #1
471
472 ; Function Attrs: nounwind
473 declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #3
474
475 attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
476 attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
477 attributes #2 = { inlinehint nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
478 attributes #3 = { nounwind }
479 attributes #4 = { noreturn nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
480 attributes #5 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
481 attributes #6 = { nobuiltin nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
482 attributes #7 = { noreturn nounwind }
483
484 !llvm.ident = !{!0}
485
486 !0 = metadata !{metadata !"clang version 3.6.0 (trunk 215115) (llvm/trunk 215117)"}
487 !1 = metadata !{metadata !2, metadata !4, i64 0}
488 !2 = metadata !{metadata !"_ZTSSs", metadata !3, i64 0}
489 !3 = metadata !{metadata !"_ZTSNSs12_Alloc_hiderE", metadata !4, i64 0}
490 !4 = metadata !{metadata !"any pointer", metadata !5, i64 0}
491 !5 = metadata !{metadata !"omnipotent char", metadata !6, i64 0}
492 !6 = metadata !{metadata !"Simple C/C++ TBAA"}
493 !7 = metadata !{metadata !8, metadata !9, i64 0}
494 !8 = metadata !{metadata !"_ZTSNSs9_Rep_baseE", metadata !9, i64 0, metadata !9, i64 8, metadata !10, i64 16}
495 !9 = metadata !{metadata !"long", metadata !5, i64 0}
496 !10 = metadata !{metadata !"int", metadata !5, i64 0}
497 !11 = metadata !{metadata !12, metadata !12, i64 0}
498 !12 = metadata !{metadata !"vtable pointer", metadata !6, i64 0}
499 !13 = metadata !{metadata !3, metadata !4, i64 0}
500 !14 = metadata !{metadata !15, metadata !10, i64 24}
501 !15 = metadata !{metadata !"_ZTSN4llvm12SMDiagnosticE", metadata !4, i64 0, metadata !16, i64 8, metadata !2, i64 16, metadata !10, i64 24, metadata !10, i64 28, metadata !17, i64 32, metadata !2, i64 40, metadata !2, i64 48, metadata !18, i64 56, metadata !19, i64 80}
502 !16 = metadata !{metadata !"_ZTSN4llvm5SMLocE", metadata !4, i64 0}
503 !17 = metadata !{metadata !"_ZTSN4llvm9SourceMgr8DiagKindE", metadata !5, i64 0}
504 !18 = metadata !{metadata !"_ZTSSt6vectorISt4pairIjjESaIS1_EE"}
505 !19 = metadata !{metadata !"_ZTSN4llvm11SmallVectorINS_7SMFixItELj4EEE", metadata !20, i64 48}
506 !20 = metadata !{metadata !"_ZTSN4llvm18SmallVectorStorageINS_7SMFixItELj4EEE", metadata !5, i64 0}
507 !21 = metadata !{metadata !15, metadata !10, i64 28}
508 !22 = metadata !{metadata !15, metadata !17, i64 32}
509 !23 = metadata !{metadata !24, metadata !4, i64 0}
510 !24 = metadata !{metadata !"_ZTSN4llvm15SmallVectorBaseE", metadata !4, i64 0, metadata !4, i64 8, metadata !4, i64 16}
511 !25 = metadata !{metadata !24, metadata !4, i64 8}
512 !26 = metadata !{metadata !24, metadata !4, i64 16}
513 !27 = metadata !{metadata !4, metadata !4, i64 0}
514 !28 = metadata !{metadata !"branch_weights", i32 64, i32 4}
515 !29 = metadata !{metadata !10, metadata !10, i64 0}
516 !30 = metadata !{metadata !31, metadata !4, i64 8}
517 !31 = metadata !{metadata !"_ZTSN4llvm12MemoryBufferE", metadata !4, i64 8, metadata !4, i64 16}
518 !32 = metadata !{metadata !31, metadata !4, i64 16}
519 !33 = metadata !{metadata !5, metadata !5, i64 0}
520 !34 = metadata !{metadata !35, metadata !4, i64 0}
521 !35 = metadata !{metadata !"_ZTSSt12_Vector_baseISt4pairIjjESaIS1_EE", metadata !36, i64 0}
522 !36 = metadata !{metadata !"_ZTSNSt12_Vector_baseISt4pairIjjESaIS1_EE12_Vector_implE", metadata !4, i64 0, metadata !4, i64 8, metadata !4, i64 16}
523 !37 = metadata !{metadata !38, metadata !38, i64 0}
524 !38 = metadata !{metadata !"bool", metadata !5, i64 0}
525 !39 = metadata !{i8 0, i8 2}
526 !40 = metadata !{metadata !41, metadata !4, i64 0}
527 !41 = metadata !{metadata !"_ZTSN4llvm10TimeRegionE", metadata !4, i64 0}
528 !42 = metadata !{metadata !43, metadata !44, i64 32}
529 !43 = metadata !{metadata !"_ZTSN4llvm11raw_ostreamE", metadata !4, i64 8, metadata !4, i64 16, metadata !4, i64 24, metadata !44, i64 32}
530 !44 = metadata !{metadata !"_ZTSN4llvm11raw_ostream10BufferKindE", metadata !5, i64 0}
531 !45 = metadata !{metadata !43, metadata !4, i64 24}
532 !46 = metadata !{metadata !43, metadata !4, i64 8}
533 !47 = metadata !{i64 0, i64 8, metadata !27, i64 8, i64 8, metadata !27}