brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.6 KiB · 0558421 Raw
372 lines · plain
1; RUN: llc -O2 -mtriple=hexagon -mcpu=hexagonv5 < %s | FileCheck %s2; we do not want to see a segv.3; CHECK-NOT: segmentation4; CHECK: call5 6target datalayout = "e-m:e-p:32:32-i1:32-i64:64-a:0-v32:32-n16:32"7target triple = "hexagon"8 9%"class.std::__1::basic_string" = type { %"class.std::__1::__compressed_pair" }10%"class.std::__1::__compressed_pair" = type { %"class.std::__1::__libcpp_compressed_pair_imp" }11%"class.std::__1::__libcpp_compressed_pair_imp" = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep" }12%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep" = type { %union.anon }13%union.anon = type { %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long" }14%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long" = type { i32, i32, ptr }15%"class.std::__1::ios_base" = type { ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i32, i32, ptr, i32, i32, ptr, i32, i32 }16%"class.std::__1::basic_streambuf" = type { ptr, %"class.std::__1::locale", ptr, ptr, ptr, ptr, ptr, ptr }17%"class.std::__1::locale" = type { ptr }18%"class.std::__1::locale::__imp" = type opaque19%"class.std::__1::allocator" = type { i8 }20%"class.std::__1::ostreambuf_iterator" = type { ptr }21%"class.std::__1::__basic_string_common" = type { i8 }22%"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short" = type { %union.anon.0, [11 x i8] }23%union.anon.0 = type { i8 }24 25; Function Attrs: nounwind26declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture readonly, i32, i1) #027 28declare i32 @__gxx_personality_v0(...)29 30; Function Attrs: nounwind31declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr) #132 33define weak_odr hidden i32 @_ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i32 %__s.coerce, ptr %__ob, ptr %__op, ptr %__oe, ptr nonnull %__iob, i8 zeroext %__fl) #2 personality ptr @__gxx_personality_v0 {34entry:35  %this.addr.i66 = alloca ptr, align 436  %__s.addr.i67 = alloca ptr, align 437  %__n.addr.i68 = alloca i32, align 438  %__p.addr.i.i = alloca ptr, align 439  %this.addr.i.i.i13.i.i = alloca ptr, align 440  %this.addr.i.i14.i.i = alloca ptr, align 441  %this.addr.i15.i.i = alloca ptr, align 442  %__x.addr.i.i.i.i.i = alloca ptr, align 443  %__r.addr.i.i.i.i = alloca ptr, align 444  %this.addr.i.i.i4.i.i = alloca ptr, align 445  %this.addr.i.i5.i.i = alloca ptr, align 446  %this.addr.i6.i.i = alloca ptr, align 447  %this.addr.i.i.i.i.i56 = alloca ptr, align 448  %this.addr.i.i.i.i57 = alloca ptr, align 449  %this.addr.i.i.i58 = alloca ptr, align 450  %this.addr.i.i59 = alloca ptr, align 451  %this.addr.i60 = alloca ptr, align 452  %this.addr.i.i.i.i.i = alloca ptr, align 453  %this.addr.i.i.i.i = alloca ptr, align 454  %this.addr.i.i.i = alloca ptr, align 455  %this.addr.i.i = alloca ptr, align 456  %__n.addr.i.i = alloca i32, align 457  %__c.addr.i.i = alloca i8, align 158  %this.addr.i53 = alloca ptr, align 459  %__n.addr.i54 = alloca i32, align 460  %__c.addr.i = alloca i8, align 161  %this.addr.i46 = alloca ptr, align 462  %__s.addr.i47 = alloca ptr, align 463  %__n.addr.i48 = alloca i32, align 464  %this.addr.i44 = alloca ptr, align 465  %__s.addr.i = alloca ptr, align 466  %__n.addr.i = alloca i32, align 467  %this.addr.i41 = alloca ptr, align 468  %__wide.addr.i = alloca i32, align 469  %__r.i = alloca i32, align 470  %this.addr.i = alloca ptr, align 471  %retval = alloca %"class.std::__1::ostreambuf_iterator", align 472  %__s = alloca %"class.std::__1::ostreambuf_iterator", align 473  %__ob.addr = alloca ptr, align 474  %__op.addr = alloca ptr, align 475  %__oe.addr = alloca ptr, align 476  %__iob.addr = alloca ptr, align 477  %__fl.addr = alloca i8, align 178  %__sz = alloca i32, align 479  %__ns = alloca i32, align 480  %__np = alloca i32, align 481  %__sp = alloca %"class.std::__1::basic_string", align 482  %exn.slot = alloca ptr83  %ehselector.slot = alloca i3284  %cleanup.dest.slot = alloca i3285  %coerce.val.ip = inttoptr i32 %__s.coerce to ptr86  store ptr %coerce.val.ip, ptr %__s87  store ptr %__ob, ptr %__ob.addr, align 488  store ptr %__op, ptr %__op.addr, align 489  store ptr %__oe, ptr %__oe.addr, align 490  store ptr %__iob, ptr %__iob.addr, align 491  store i8 %__fl, ptr %__fl.addr, align 192  %0 = load ptr, ptr %__s, align 493  %cmp = icmp eq ptr %0, null94  br i1 %cmp, label %if.then, label %if.end95 96if.then:                                          ; preds = %entry97  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %retval, ptr align 4 %__s, i32 4, i1 false)98  br label %return99 100if.end:                                           ; preds = %entry101  %1 = load ptr, ptr %__oe.addr, align 4102  %2 = load ptr, ptr %__ob.addr, align 4103  %sub.ptr.lhs.cast = ptrtoint ptr %1 to i32104  %sub.ptr.rhs.cast = ptrtoint ptr %2 to i32105  %sub.ptr.sub = sub i32 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast106  store i32 %sub.ptr.sub, ptr %__sz, align 4107  %3 = load ptr, ptr %__iob.addr, align 4108  store ptr %3, ptr %this.addr.i, align 4109  %this1.i = load ptr, ptr %this.addr.i110  %__width_.i = getelementptr inbounds %"class.std::__1::ios_base", ptr %this1.i, i32 0, i32 3111  %4 = load i32, ptr %__width_.i, align 4112  store i32 %4, ptr %__ns, align 4113  %5 = load i32, ptr %__ns, align 4114  %6 = load i32, ptr %__sz, align 4115  %cmp1 = icmp sgt i32 %5, %6116  br i1 %cmp1, label %if.then2, label %if.else117 118if.then2:                                         ; preds = %if.end119  %7 = load i32, ptr %__sz, align 4120  %8 = load i32, ptr %__ns, align 4121  %sub = sub nsw i32 %8, %7122  store i32 %sub, ptr %__ns, align 4123  br label %if.end3124 125if.else:                                          ; preds = %if.end126  store i32 0, ptr %__ns, align 4127  br label %if.end3128 129if.end3:                                          ; preds = %if.else, %if.then2130  %9 = load ptr, ptr %__op.addr, align 4131  %10 = load ptr, ptr %__ob.addr, align 4132  %sub.ptr.lhs.cast4 = ptrtoint ptr %9 to i32133  %sub.ptr.rhs.cast5 = ptrtoint ptr %10 to i32134  %sub.ptr.sub6 = sub i32 %sub.ptr.lhs.cast4, %sub.ptr.rhs.cast5135  store i32 %sub.ptr.sub6, ptr %__np, align 4136  %11 = load i32, ptr %__np, align 4137  %cmp7 = icmp sgt i32 %11, 0138  br i1 %cmp7, label %if.then8, label %if.end15139 140if.then8:                                         ; preds = %if.end3141  %12 = load ptr, ptr %__s, align 4142  %13 = load ptr, ptr %__ob.addr, align 4143  %14 = load i32, ptr %__np, align 4144  store ptr %12, ptr %this.addr.i46, align 4145  store ptr %13, ptr %__s.addr.i47, align 4146  store i32 %14, ptr %__n.addr.i48, align 4147  %this1.i49 = load ptr, ptr %this.addr.i46148  %vtable.i50 = load ptr, ptr %this1.i49149  %vfn.i51 = getelementptr inbounds ptr, ptr %vtable.i50, i64 12150  %15 = load ptr, ptr %vfn.i51151  %16 = load ptr, ptr %__s.addr.i47, align 4152  %17 = load i32, ptr %__n.addr.i48, align 4153  %call.i52 = call i32 %15(ptr %this1.i49, ptr %16, i32 %17)154  %18 = load i32, ptr %__np, align 4155  %cmp11 = icmp ne i32 %call.i52, %18156  br i1 %cmp11, label %if.then12, label %if.end14157 158if.then12:                                        ; preds = %if.then8159  store ptr null, ptr %__s, align 4160  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %retval, ptr align 4 %__s, i32 4, i1 false)161  br label %return162 163if.end14:                                         ; preds = %if.then8164  br label %if.end15165 166if.end15:                                         ; preds = %if.end14, %if.end3167  %19 = load i32, ptr %__ns, align 4168  %cmp16 = icmp sgt i32 %19, 0169  br i1 %cmp16, label %if.then17, label %if.end25170 171if.then17:                                        ; preds = %if.end15172  %20 = load i32, ptr %__ns, align 4173  %21 = load i8, ptr %__fl.addr, align 1174  store ptr %__sp, ptr %this.addr.i53, align 4175  store i32 %20, ptr %__n.addr.i54, align 4176  store i8 %21, ptr %__c.addr.i, align 1177  %this1.i55 = load ptr, ptr %this.addr.i53178  %22 = load i32, ptr %__n.addr.i54, align 4179  %23 = load i8, ptr %__c.addr.i, align 1180  store ptr %this1.i55, ptr %this.addr.i.i, align 4181  store i32 %22, ptr %__n.addr.i.i, align 4182  store i8 %23, ptr %__c.addr.i.i, align 1183  %this1.i.i = load ptr, ptr %this.addr.i.i184  store ptr %this1.i.i, ptr %this.addr.i.i.i, align 4185  %this1.i.i.i = load ptr, ptr %this.addr.i.i.i186  store ptr %this1.i.i.i, ptr %this.addr.i.i.i.i, align 4187  %this1.i.i.i.i = load ptr, ptr %this.addr.i.i.i.i188  store ptr %this1.i.i.i.i, ptr %this.addr.i.i.i.i.i, align 4189  %this1.i.i.i.i.i = load ptr, ptr %this.addr.i.i.i.i.i190  %24 = load i32, ptr %__n.addr.i.i, align 4191  %25 = load i8, ptr %__c.addr.i.i, align 1192  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(ptr %this1.i.i, i32 %24, i8 zeroext %25)193  %26 = load ptr, ptr %__s, align 4194  store ptr %__sp, ptr %this.addr.i60, align 4195  %this1.i61 = load ptr, ptr %this.addr.i60196  store ptr %this1.i61, ptr %this.addr.i.i59, align 4197  %this1.i.i62 = load ptr, ptr %this.addr.i.i59198  store ptr %this1.i.i62, ptr %this.addr.i.i.i58, align 4199  %this1.i.i.i63 = load ptr, ptr %this.addr.i.i.i58200  store ptr %this1.i.i.i63, ptr %this.addr.i.i.i.i57, align 4201  %this1.i.i.i.i64 = load ptr, ptr %this.addr.i.i.i.i57202  store ptr %this1.i.i.i.i64, ptr %this.addr.i.i.i.i.i56, align 4203  %this1.i.i.i.i.i65 = load ptr, ptr %this.addr.i.i.i.i.i56204  %27 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep", ptr %this1.i.i.i.i.i65, i32 0, i32 0205  %28 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short", ptr %27, i32 0, i32 0206  %29 = load i8, ptr %28, align 1207  %conv.i.i.i = zext i8 %29 to i32208  %and.i.i.i = and i32 %conv.i.i.i, 1209  %tobool.i.i.i = icmp ne i32 %and.i.i.i, 0210  br i1 %tobool.i.i.i, label %cond.true.i.i, label %cond.false.i.i211 212cond.true.i.i:                                    ; preds = %if.then17213  store ptr %this1.i.i62, ptr %this.addr.i15.i.i, align 4214  %this1.i16.i.i = load ptr, ptr %this.addr.i15.i.i215  store ptr %this1.i16.i.i, ptr %this.addr.i.i14.i.i, align 4216  %this1.i.i18.i.i = load ptr, ptr %this.addr.i.i14.i.i217  store ptr %this1.i.i18.i.i, ptr %this.addr.i.i.i13.i.i, align 4218  %this1.i.i.i19.i.i = load ptr, ptr %this.addr.i.i.i13.i.i219  %30 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep", ptr %this1.i.i.i19.i.i, i32 0, i32 0220  %__data_.i21.i.i = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__long", ptr %30, i32 0, i32 2221  %31 = load ptr, ptr %__data_.i21.i.i, align 4222  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit223 224cond.false.i.i:                                   ; preds = %if.then17225  store ptr %this1.i.i62, ptr %this.addr.i6.i.i, align 4226  %this1.i7.i.i = load ptr, ptr %this.addr.i6.i.i227  store ptr %this1.i7.i.i, ptr %this.addr.i.i5.i.i, align 4228  %this1.i.i9.i.i = load ptr, ptr %this.addr.i.i5.i.i229  store ptr %this1.i.i9.i.i, ptr %this.addr.i.i.i4.i.i, align 4230  %this1.i.i.i10.i.i = load ptr, ptr %this.addr.i.i.i4.i.i231  %32 = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__rep", ptr %this1.i.i.i10.i.i, i32 0, i32 0232  %__data_.i.i.i = getelementptr inbounds %"struct.std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__short", ptr %32, i32 0, i32 1233  store ptr %__data_.i.i.i, ptr %__r.addr.i.i.i.i, align 4234  %33 = load ptr, ptr %__r.addr.i.i.i.i, align 4235  store ptr %33, ptr %__x.addr.i.i.i.i.i, align 4236  %34 = load ptr, ptr %__x.addr.i.i.i.i.i, align 4237  br label %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit238 239_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit: ; preds = %cond.false.i.i, %cond.true.i.i240  %cond.i.i = phi ptr [ %31, %cond.true.i.i ], [ %34, %cond.false.i.i ]241  store ptr %cond.i.i, ptr %__p.addr.i.i, align 4242  %35 = load ptr, ptr %__p.addr.i.i, align 4243  %36 = load i32, ptr %__ns, align 4244  store ptr %26, ptr %this.addr.i66, align 4245  store ptr %35, ptr %__s.addr.i67, align 4246  store i32 %36, ptr %__n.addr.i68, align 4247  %this1.i69 = load ptr, ptr %this.addr.i66248  %vtable.i70 = load ptr, ptr %this1.i69249  %vfn.i71 = getelementptr inbounds ptr, ptr %vtable.i70, i64 12250  %37 = load ptr, ptr %vfn.i71251  %38 = load ptr, ptr %__s.addr.i67, align 4252  %39 = load i32, ptr %__n.addr.i68, align 4253  %call.i7273 = invoke i32 %37(ptr %this1.i69, ptr %38, i32 %39)254          to label %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKci.exit unwind label %lpad255 256_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKci.exit: ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit257  br label %invoke.cont258 259invoke.cont:                                      ; preds = %_ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5sputnEPKci.exit260  %40 = load i32, ptr %__ns, align 4261  %cmp21 = icmp ne i32 %call.i7273, %40262  br i1 %cmp21, label %if.then22, label %if.end24263 264if.then22:                                        ; preds = %invoke.cont265  store ptr null, ptr %__s, align 4266  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %retval, ptr align 4 %__s, i32 4, i1 false)267  store i32 1, ptr %cleanup.dest.slot268  br label %cleanup269 270lpad:                                             ; preds = %_ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4dataEv.exit271  %41 = landingpad { ptr, i32 }272          cleanup273  %42 = extractvalue { ptr, i32 } %41, 0274  store ptr %42, ptr %exn.slot275  %43 = extractvalue { ptr, i32 } %41, 1276  store i32 %43, ptr %ehselector.slot277  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr %__sp) #0278  br label %eh.resume279 280if.end24:                                         ; preds = %invoke.cont281  store i32 0, ptr %cleanup.dest.slot282  br label %cleanup283 284cleanup:                                          ; preds = %if.end24, %if.then22285  call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr %__sp) #0286  %cleanup.dest = load i32, ptr %cleanup.dest.slot287  switch i32 %cleanup.dest, label %unreachable [288    i32 0, label %cleanup.cont289    i32 1, label %return290  ]291 292cleanup.cont:                                     ; preds = %cleanup293  br label %if.end25294 295if.end25:                                         ; preds = %cleanup.cont, %if.end15296  %44 = load ptr, ptr %__oe.addr, align 4297  %45 = load ptr, ptr %__op.addr, align 4298  %sub.ptr.lhs.cast26 = ptrtoint ptr %44 to i32299  %sub.ptr.rhs.cast27 = ptrtoint ptr %45 to i32300  %sub.ptr.sub28 = sub i32 %sub.ptr.lhs.cast26, %sub.ptr.rhs.cast27301  store i32 %sub.ptr.sub28, ptr %__np, align 4302  %46 = load i32, ptr %__np, align 4303  %cmp29 = icmp sgt i32 %46, 0304  br i1 %cmp29, label %if.then30, label %if.end37305 306if.then30:                                        ; preds = %if.end25307  %47 = load ptr, ptr %__s, align 4308  %48 = load ptr, ptr %__op.addr, align 4309  %49 = load i32, ptr %__np, align 4310  store ptr %47, ptr %this.addr.i44, align 4311  store ptr %48, ptr %__s.addr.i, align 4312  store i32 %49, ptr %__n.addr.i, align 4313  %this1.i45 = load ptr, ptr %this.addr.i44314  %vtable.i = load ptr, ptr %this1.i45315  %vfn.i = getelementptr inbounds ptr, ptr %vtable.i, i64 12316  %50 = load ptr, ptr %vfn.i317  %51 = load ptr, ptr %__s.addr.i, align 4318  %52 = load i32, ptr %__n.addr.i, align 4319  %call.i = call i32 %50(ptr %this1.i45, ptr %51, i32 %52)320  %53 = load i32, ptr %__np, align 4321  %cmp33 = icmp ne i32 %call.i, %53322  br i1 %cmp33, label %if.then34, label %if.end36323 324if.then34:                                        ; preds = %if.then30325  store ptr null, ptr %__s, align 4326  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %retval, ptr align 4 %__s, i32 4, i1 false)327  br label %return328 329if.end36:                                         ; preds = %if.then30330  br label %if.end37331 332if.end37:                                         ; preds = %if.end36, %if.end25333  %54 = load ptr, ptr %__iob.addr, align 4334  store ptr %54, ptr %this.addr.i41, align 4335  store i32 0, ptr %__wide.addr.i, align 4336  %this1.i42 = load ptr, ptr %this.addr.i41337  %__width_.i43 = getelementptr inbounds %"class.std::__1::ios_base", ptr %this1.i42, i32 0, i32 3338  %55 = load i32, ptr %__width_.i43, align 4339  store i32 %55, ptr %__r.i, align 4340  %56 = load i32, ptr %__wide.addr.i, align 4341  %__width_2.i = getelementptr inbounds %"class.std::__1::ios_base", ptr %this1.i42, i32 0, i32 3342  store i32 %56, ptr %__width_2.i, align 4343  %57 = load i32, ptr %__r.i, align 4344  call void @llvm.memcpy.p0.p0.i32(ptr align 4 %retval, ptr align 4 %__s, i32 4, i1 false)345  br label %return346 347return:                                           ; preds = %if.end37, %if.then34, %cleanup, %if.then12, %if.then348  %58 = load ptr, ptr %retval349  %coerce.val.pi = ptrtoint ptr %58 to i32350  ret i32 %coerce.val.pi351 352eh.resume:                                        ; preds = %lpad353  %exn = load ptr, ptr %exn.slot354  %sel = load i32, ptr %ehselector.slot355  %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn, 0356  %lpad.val40 = insertvalue { ptr, i32 } %lpad.val, i32 %sel, 1357  resume { ptr, i32 } %lpad.val40358 359unreachable:                                      ; preds = %cleanup360  unreachable361}362 363declare void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(ptr, i32, i8 zeroext) #2364 365attributes #0 = { nounwind }366attributes #1 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }367attributes #2 = { "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }368 369!llvm.ident = !{!0}370 371!0 = !{!"Clang 3.1"}372