1 ; RUN: opt < %s -inline -prune-eh -disable-output 2 ; PR992 3 target datalayout = "e-p:32:32" 4 target triple = "i686-pc-linux-gnu" 5 deplibs = [ "stdc++", "c", "crtend" ] 6 %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i32, [52 x i8] } 7 %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } 8 %"struct.__cxxabiv1::__array_type_info" = type { %"struct.std::type_info" } 9 %"struct.__cxxabiv1::__si_class_type_info" = type { %"struct.__cxxabiv1::__array_type_info", %"struct.__cxxabiv1::__array_type_info"* } 10 %"struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" = type { i32 } 11 %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" = type { i8* } 12 %"struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" = type { i32* } 13 %"struct.__gnu_cxx::char_producer<char>" = type { i32 (...)** } 14 %"struct.__gnu_cxx::stdio_sync_filebuf<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >", %struct._IO_FILE*, i32 } 15 %"struct.__gnu_cxx::stdio_sync_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", %struct._IO_FILE*, i32 } 16 %struct.__locale_struct = type { [13 x %struct.locale_data*], i16*, i32*, i32*, [13 x i8*] } 17 %struct.__mbstate_t = type { i32, %"struct.__gnu_cxx::_Rope_rep_alloc_base<char,std::allocator<char>, true>" } 18 %struct.locale_data = type opaque 19 %"struct.std::__basic_file<char>" = type { %struct._IO_FILE*, i1 } 20 %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>" = type { %"struct.std::locale::facet" } 21 %"struct.std::basic_filebuf<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >", i32, %"struct.std::__basic_file<char>", i32, %struct.__mbstate_t, %struct.__mbstate_t, i8*, i32, i1, i1, i1, i1, i8, i8*, i8*, i1, %"struct.std::codecvt<char,char,__mbstate_t>"*, i8*, i32, i8*, i8* } 22 %"struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >", i32, %"struct.std::__basic_file<char>", i32, %struct.__mbstate_t, %struct.__mbstate_t, i32*, i32, i1, i1, i1, i1, i32, i32*, i32*, i1, %"struct.std::codecvt<char,char,__mbstate_t>"*, i8*, i32, i8*, i8* } 23 %"struct.std::basic_fstream<char,std::char_traits<char> >" = type { { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>" }, %"struct.std::basic_filebuf<char,std::char_traits<char> >", %"struct.std::basic_ios<char,std::char_traits<char> >" } 24 %"struct.std::basic_fstream<wchar_t,std::char_traits<wchar_t> >" = type { { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>" }, %"struct.std::basic_filebuf<wchar_t,std::char_traits<wchar_t> >", %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } 25 %"struct.std::basic_ios<char,std::char_traits<char> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<char,std::char_traits<char> >"*, i8, i1, %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, %"struct.std::ctype<char>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* } 26 %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::ios_base", %"struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >"*, i32, i1, %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, %"struct.std::codecvt<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"*, %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>"* } 27 %"struct.std::basic_iostream<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::locale::facet", %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } 28 %"struct.std::basic_ostream<char,std::char_traits<char> >" = type { i32 (...)**, %"struct.std::basic_ios<char,std::char_traits<char> >" } 29 %"struct.std::basic_ostream<wchar_t,std::char_traits<wchar_t> >" = type { i32 (...)**, %"struct.std::basic_ios<wchar_t,std::char_traits<wchar_t> >" } 30 %"struct.std::basic_streambuf<char,std::char_traits<char> >" = type { i32 (...)**, i8*, i8*, i8*, i8*, i8*, i8*, %"struct.std::locale" } 31 %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >" = type { i32 (...)**, i32*, i32*, i32*, i32*, i32*, i32*, %"struct.std::locale" } 32 %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" = type { %"struct.__gnu_cxx::__normal_iterator<char*,std::basic_string<char, std::char_traits<char>, std::allocator<char> > >" } 33 %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep" = type { %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" } 34 %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Rep_base" = type { i32, i32, i32 } 35 %"struct.std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >" = type { %"struct.__gnu_cxx::__normal_iterator<const wchar_t*,std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >" } 36 %"struct.std::codecvt<char,char,__mbstate_t>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct* } 37 %"struct.std::collate<char>" = type { %"struct.std::locale::facet", %struct.__locale_struct* } 38 %"struct.std::collate_byname<char>" = type { %"struct.std::collate<char>" } 39 %"struct.std::ctype<char>" = type { %"struct.std::__codecvt_abstract_base<char,char,__mbstate_t>", %struct.__locale_struct*, i1, i32*, i32*, i16* } 40 %"struct.std::ctype_byname<char>" = type { %"struct.std::ctype<char>" } 41 %"struct.std::domain_error" = type { %"struct.std::logic_error" } 42 %"struct.std::ios_base" = type { i32 (...)**, i32, i32, i32, i32, i32, %"struct.std::ios_base::_Callback_list"*, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, %"struct.std::ios_base::_Words"*, %"struct.std::locale" } 43 %"struct.std::ios_base::_Callback_list" = type { %"struct.std::ios_base::_Callback_list"*, void (i32, %"struct.std::ios_base"*, i32)*, i32, i32 } 44 %"struct.std::ios_base::_Words" = type { i8*, i32 } 45 %"struct.std::istreambuf_iterator<char,std::char_traits<char> >" = type { %"struct.std::basic_streambuf<char,std::char_traits<char> >"*, i32 } 46 %"struct.std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t> >" = type { %"struct.std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >"*, i32 } 47 %"struct.std::locale" = type { %"struct.std::locale::_Impl"* } 48 %"struct.std::locale::_Impl" = type { i32, %"struct.std::locale::facet"**, i32, %"struct.std::locale::facet"**, i8** } 49 %"struct.std::locale::facet" = type { i32 (...)**, i32 } 50 %"struct.std::logic_error" = type { %"struct.__gnu_cxx::char_producer<char>", %"struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >" } 51 %"struct.std::type_info" = type { i32 (...)**, i8* } 52 @.str_11 = external global [42 x i8] ; <[42 x i8]*> [#uses=0] 53 @.str_9 = external global [24 x i8] ; <[24 x i8]*> [#uses=0] 54 @.str_1 = external global [17 x i8] ; <[17 x i8]*> [#uses=0] 55 56 define void @main() { 57 entry: 58 tail call fastcc void @_ZNSolsEi( ) 59 ret void 60 } 61 62 define fastcc void @_ZNSolsEi() { 63 entry: 64 %tmp.22 = icmp eq i32 0, 0 ; <i1> [#uses=1] 65 br i1 %tmp.22, label %else, label %then 66 67 then: ; preds = %entry 68 ret void 69 70 else: ; preds = %entry 71 tail call fastcc void @_ZNSolsEl( ) 72 ret void 73 } 74 75 define void @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_() { 76 entry: 77 ret void 78 } 79 80 define fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate() { 81 entry: 82 tail call fastcc void @_ZSt19__throw_ios_failurePKc( ) 83 ret void 84 } 85 86 define fastcc void @_ZNSo3putEc() { 87 entry: 88 ret void 89 } 90 91 define fastcc void @_ZNSolsEl() { 92 entry: 93 %tmp.21.i = icmp eq %"struct.std::basic_ostream<char,std::char_traits<char> >"* null, null ; <i1> [#uses=1] 94 br i1 %tmp.21.i, label %endif.0.i, label %shortcirc_next.i 95 96 shortcirc_next.i: ; preds = %entry 97 ret void 98 99 endif.0.i: ; preds = %entry 100 call fastcc void @_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate( ) 101 ret void 102 } 103 104 define fastcc void @_ZSt19__throw_ios_failurePKc() { 105 entry: 106 call fastcc void @_ZNSsC1EPKcRKSaIcE( ) 107 ret void 108 } 109 110 define fastcc void @_ZNSt8ios_baseD2Ev() { 111 entry: 112 unreachable 113 } 114 115 define void @_ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv() { 116 entry: 117 unreachable 118 } 119 120 define void @_ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev() { 121 entry: 122 unreachable 123 } 124 125 define void @_ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci() { 126 entry: 127 ret void 128 } 129 130 define fastcc void @_ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale() { 131 entry: 132 ret void 133 } 134 135 declare fastcc void @_ZNSaIcED1Ev() 136 137 define fastcc void @_ZSt19__throw_logic_errorPKc() { 138 entry: 139 call fastcc void @_ZNSt11logic_errorC1ERKSs( ) 140 ret void 141 } 142 143 define fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE() { 144 entry: 145 br i1 false, label %then.0, label %endif.0 146 147 then.0: ; preds = %entry 148 call fastcc void @_ZSt20__throw_length_errorPKc( ) 149 ret void 150 151 endif.0: ; preds = %entry 152 ret void 153 } 154 155 define fastcc void @_ZSt20__throw_length_errorPKc() { 156 entry: 157 call fastcc void @_ZNSt12length_errorC1ERKSs( ) 158 ret void 159 } 160 161 define fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type() { 162 entry: 163 br i1 false, label %then.1.i, label %endif.1.i 164 165 then.1.i: ; preds = %entry 166 call fastcc void @_ZSt19__throw_logic_errorPKc( ) 167 ret void 168 169 endif.1.i: ; preds = %entry 170 call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( ) 171 unreachable 172 } 173 174 define fastcc void @_ZNSsC1ERKSs() { 175 entry: 176 call fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_( ) 177 invoke fastcc void @_ZNSaIcEC1ERKS_( ) 178 to label %invoke_cont.1 unwind label %invoke_catch.1 179 180 invoke_catch.1: ; preds = %entry 181 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 182 catch i8* null 183 call fastcc void @_ZNSaIcED1Ev( ) 184 resume { i8*, i32 } %exn 185 186 invoke_cont.1: ; preds = %entry 187 call fastcc void @_ZNSaIcEC2ERKS_( ) 188 ret void 189 } 190 191 define fastcc void @_ZNSs7reserveEj() { 192 entry: 193 ret void 194 } 195 196 define fastcc void @_ZNSaIcEC1ERKS_() { 197 entry: 198 ret void 199 } 200 201 define fastcc void @_ZNSs4_Rep7_M_grabERKSaIcES2_() { 202 entry: 203 br i1 false, label %else.i, label %cond_true 204 205 cond_true: ; preds = %entry 206 ret void 207 208 else.i: ; preds = %entry 209 tail call fastcc void @_ZNSs4_Rep9_S_createEjRKSaIcE( ) 210 ret void 211 } 212 213 define fastcc void @_ZNSsC1EPKcRKSaIcE() { 214 entry: 215 tail call fastcc void @_ZNSs16_S_construct_auxIPKcEEPcT_S3_RKSaIcE12__false_type( ) 216 unreachable 217 } 218 219 define fastcc void @_ZNSaIcEC2ERKS_() { 220 entry: 221 ret void 222 } 223 224 define void @_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev() { 225 entry: 226 unreachable 227 } 228 229 define void @_ZNSt14collate_bynameIcED1Ev() { 230 entry: 231 unreachable 232 } 233 234 define void @_ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy() { 235 entry: 236 ret void 237 } 238 239 define void @_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED1Ev() { 240 entry: 241 unreachable 242 } 243 244 define void @_ZNSt12ctype_bynameIcED0Ev() { 245 entry: 246 unreachable 247 } 248 249 define fastcc void @_ZNSt8messagesIwEC1Ej() { 250 entry: 251 ret void 252 } 253 254 define fastcc void @_ZSt14__convert_to_vIlEvPKcRT_RSt12_Ios_IostateRKP15__locale_structi() { 255 entry: 256 ret void 257 } 258 259 define fastcc void @_ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej() { 260 entry: 261 ret void 262 } 263 264 define fastcc void @_ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej() { 265 entry: 266 ret void 267 } 268 269 define fastcc void @_ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs() { 270 entry: 271 unreachable 272 } 273 274 define fastcc void @_ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_() { 275 entry: 276 ret void 277 } 278 279 define void @_ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev() { 280 entry: 281 unreachable 282 } 283 284 define void @_ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv() { 285 entry: 286 ret void 287 } 288 289 define void @_ZNSt9exceptionD0Ev() { 290 entry: 291 unreachable 292 } 293 294 define fastcc void @_ZNSt11logic_errorC1ERKSs() { 295 entry: 296 call fastcc void @_ZNSsC1ERKSs( ) 297 ret void 298 } 299 300 define fastcc void @_ZNSt11logic_errorD2Ev() { 301 entry: 302 unreachable 303 } 304 305 define fastcc void @_ZNSt12length_errorC1ERKSs() { 306 entry: 307 invoke fastcc void @_ZNSsC1ERKSs( ) 308 to label %_ZNSt11logic_errorC2ERKSs.exit unwind label %invoke_catch.i 309 310 invoke_catch.i: ; preds = %entry 311 %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0 312 catch i8* null 313 resume { i8*, i32 } %exn 314 315 _ZNSt11logic_errorC2ERKSs.exit: ; preds = %entry 316 ret void 317 } 318 319 define void @_ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_() { 320 entry: 321 ret void 322 } 323 324 define fastcc void @_ZNSbIwSt11char_traitsIwESaIwEE16_S_construct_auxIPKwEEPwT_S7_RKS1_12__false_type() { 325 entry: 326 ret void 327 } 328 329 define void @_ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev() { 330 entry: 331 ret void 332 } 333 334 define void @_ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev() { 335 entry: 336 unreachable 337 } 338 339 define fastcc void @_ZNSt5ctypeIcEC1EPKtbj() { 340 entry: 341 ret void 342 } 343 344 declare i32 @__gxx_personality_v0(...) 345