Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 6.76 KB | None | 0 0
  1. ; ModuleID = '/tmp/webcompile/_31880_0.bc'
  2. source_filename = "/tmp/webcompile/_31880_0.cc"
  3. target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  4. target triple = "x86_64-ellcc-linux"
  5.  
  6. %class.X = type { i8 }
  7.  
  8. $_ZN1XC2Eb = comdat any
  9.  
  10. $_ZN1XD2Ev = comdat any
  11.  
  12. $__clang_call_terminate = comdat any
  13.  
  14. @glb = global i32 0, align 4
  15. @_ZTIi = external constant i8*
  16.  
  17. ; Function Attrs: noinline norecurse optnone
  18. define i32 @main() #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
  19.   %1 = alloca i32, align 4
  20.   %2 = alloca %class.X, align 1
  21.   %3 = alloca i8*
  22.   %4 = alloca i32
  23.   %5 = alloca %class.X, align 1
  24.   %6 = alloca i32, align 4
  25.   store i32 0, i32* %1, align 4
  26.   invoke void @_ZN1XC2Eb(%class.X* %2, i1 zeroext true)
  27.           to label %7 unwind label %11
  28.  
  29. ; <label>:7:                                      ; preds = %0
  30.   invoke void @_ZN1XC2Eb(%class.X* %5, i1 zeroext true)
  31.           to label %8 unwind label %15
  32.  
  33. ; <label>:8:                                      ; preds = %7
  34.   invoke void @_ZN1XD2Ev(%class.X* %5)
  35.           to label %9 unwind label %15
  36.  
  37. ; <label>:9:                                      ; preds = %8
  38.   invoke void @_ZN1XD2Ev(%class.X* %2)
  39.           to label %10 unwind label %11
  40.  
  41. ; <label>:10:                                     ; preds = %9
  42.   br label %29
  43.  
  44. ; <label>:11:                                     ; preds = %9, %0
  45.   %12 = landingpad { i8*, i32 }
  46.           catch i8* bitcast (i8** @_ZTIi to i8*)
  47.   %13 = extractvalue { i8*, i32 } %12, 0
  48.   store i8* %13, i8** %3, align 8
  49.   %14 = extractvalue { i8*, i32 } %12, 1
  50.   store i32 %14, i32* %4, align 4
  51.   br label %20
  52.  
  53. ; <label>:15:                                     ; preds = %8, %7
  54.   %16 = landingpad { i8*, i32 }
  55.           cleanup
  56.           catch i8* bitcast (i8** @_ZTIi to i8*)
  57.   %17 = extractvalue { i8*, i32 } %16, 0
  58.   store i8* %17, i8** %3, align 8
  59.   %18 = extractvalue { i8*, i32 } %16, 1
  60.   store i32 %18, i32* %4, align 4
  61.   invoke void @_ZN1XD2Ev(%class.X* %2)
  62.           to label %19 unwind label %35
  63.  
  64. ; <label>:19:                                     ; preds = %15
  65.   br label %20
  66.  
  67. ; <label>:20:                                     ; preds = %19, %11
  68.   %21 = load i32, i32* %4, align 4
  69.   %22 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIi to i8*)) #5
  70.   %23 = icmp eq i32 %21, %22
  71.   br i1 %23, label %24, label %30
  72.  
  73. ; <label>:24:                                     ; preds = %20
  74.   %25 = load i8*, i8** %3, align 8
  75.   %26 = call i8* @__cxa_begin_catch(i8* %25) #5
  76.   %27 = bitcast i8* %26 to i32*
  77.   %28 = load i32, i32* %27, align 4
  78.   store i32 %28, i32* %6, align 4
  79.   call void @__cxa_end_catch() #5
  80.   br label %29
  81.  
  82. ; <label>:29:                                     ; preds = %24, %10
  83.   ret i32 0
  84.  
  85. ; <label>:30:                                     ; preds = %20
  86.   %31 = load i8*, i8** %3, align 8
  87.   %32 = load i32, i32* %4, align 4
  88.   %33 = insertvalue { i8*, i32 } undef, i8* %31, 0
  89.   %34 = insertvalue { i8*, i32 } %33, i32 %32, 1
  90.   resume { i8*, i32 } %34
  91.  
  92. ; <label>:35:                                     ; preds = %15
  93.   %36 = landingpad { i8*, i32 }
  94.           catch i8* null
  95.   %37 = extractvalue { i8*, i32 } %36, 0
  96.   call void @__clang_call_terminate(i8* %37) #6
  97.   unreachable
  98. }
  99.  
  100. ; Function Attrs: noinline optnone
  101. define linkonce_odr void @_ZN1XC2Eb(%class.X*, i1 zeroext) unnamed_addr #1 comdat align 2 {
  102.   %3 = alloca %class.X*, align 8
  103.   %4 = alloca i8, align 1
  104.   store %class.X* %0, %class.X** %3, align 8
  105.   %5 = zext i1 %1 to i8
  106.   store i8 %5, i8* %4, align 1
  107.   %6 = load %class.X*, %class.X** %3, align 8
  108.   %7 = load i8, i8* %4, align 1
  109.   %8 = trunc i8 %7 to i1
  110.   br i1 %8, label %9, label %12
  111.  
  112. ; <label>:9:                                      ; preds = %2
  113.   %10 = call i8* @__cxa_allocate_exception(i64 4) #5
  114.   %11 = bitcast i8* %10 to i32*
  115.   store i32 1, i32* %11, align 16
  116.   call void @__cxa_throw(i8* %10, i8* bitcast (i8** @_ZTIi to i8*), i8* null) #7
  117.   unreachable
  118.  
  119. ; <label>:12:                                     ; preds = %2
  120.   ret void
  121. }
  122.  
  123.  
  124. ; Function Attrs: noinline nounwind optnone
  125. define linkonce_odr void @_ZN1XD2Ev(%class.X*) unnamed_addr #2 comdat align 2 {
  126.   %2 = alloca %class.X*, align 8
  127.   store %class.X* %0, %class.X** %2, align 8
  128.   %3 = load %class.X*, %class.X** %2, align 8
  129.   %4 = load i32, i32* @glb, align 4
  130.   %5 = add nsw i32 %4, 1
  131.   store i32 %5, i32* @glb, align 4
  132.   ret void
  133. }
  134.  
  135. ; Function Attrs: noinline noreturn nounwind
  136. define linkonce_odr hidden void @__clang_call_terminate(i8*) #3 comdat {
  137.   %2 = call i8* @__cxa_begin_catch(i8* %0) #5
  138.   call void @_ZSt9terminatev() #6
  139.   unreachable
  140. }
  141.  
  142.  
  143. declare void @_ZSt9terminatev()
  144.  
  145. ; Function Attrs: nounwind readnone
  146.  
  147. declare void @__cxa_end_catch()
  148.  
  149.  
  150. declare void @__cxa_throw(i8*, i8*, i8*)
  151.  
  152. attributes #0 = { noinline norecurse optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  153. attributes #1 = { noinline optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  154. attributes #2 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
  155. attributes #3 = { noinline noreturn nounwind }
  156. attributes #4 = { nounwind readnone }
  157. attributes #5 = { nounwind }
  158. attributes #6 = { noreturn nounwind }
  159. attributes #7 = { noreturn }
  160.  
  161. !llvm.module.flags = !{!0}
  162. !llvm.ident = !{!1}
  163.  
  164. !0 = !{i32 1, !"wchar_size", i32 4}
  165. !1 = !{!"ecc version 2017-08-23 (http://ellcc.org) based on clang version 6.0.0 (trunk 311547)"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement