Advertisement
Guest User

Untitled

a guest
Jul 11th, 2015
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. ; ModuleID = 'Wide'
  2. target datalayout = "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-S32"
  3. target triple = "i686-w64-windows-gnu-elf"
  4.  
  5. %struct.T = type { i32* }
  6.  
  7. @_ZTIb = external constant i8*
  8.  
  9. define void @_Z1f1T(%struct.T* %t) #0 {
  10. entry:
  11. %exception = call i8* @__cxa_allocate_exception(i32 1) #3
  12. store i8 1, i8* %exception
  13. call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIb to i8*), i8* null) #4
  14. unreachable
  15. }
  16.  
  17. declare i8* @__cxa_allocate_exception(i32)
  18.  
  19. declare void @__cxa_throw(i8*, i8*, i8*)
  20.  
  21. define i8 @ed2ee106-5aac-49ae-af0c-968c1b7216bb() {
  22. entry:
  23. %0 = alloca i32, align 4
  24. %1 = alloca %struct.T, align 4
  25. store i32 0, i32* %0
  26. invoke void @_ZN1TC1EPi(%struct.T* %1, i32* %0)
  27. to label %continue unwind label %landingpad
  28.  
  29. catch_block: ; preds = %landingpad2, %landingpad
  30. %2 = phi { i8*, i32 } [ %7, %landingpad ], [ %8, %landingpad2 ]
  31. %3 = extractvalue { i8*, i32 } %2, 1
  32. %4 = extractvalue { i8*, i32 } %2, 0
  33. %5 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIb to i8*))
  34. %6 = icmp eq i32 %3, %5
  35. br i1 %6, label %catch_target, label %catch_continue
  36.  
  37. dest_block: ; preds = %continue
  38. call void @_ZN1TD1Ev(%struct.T* %1)
  39. ret i8 0
  40.  
  41. continue: ; preds = %entry
  42. invoke void @_Z1f1T(%struct.T* %1)
  43. to label %dest_block unwind label %landingpad2
  44.  
  45. landingpad: ; preds = %entry
  46. %7 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
  47. catch i8* bitcast (i8** @_ZTIb to i8*)
  48. catch i8* null
  49. br label %catch_block
  50.  
  51. landingpad2: ; preds = %continue
  52. %8 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
  53. catch i8* bitcast (i8** @_ZTIb to i8*)
  54. catch i8* null
  55. call void @_ZN1TD1Ev(%struct.T* %1)
  56. br label %catch_block
  57.  
  58. catch_target: ; preds = %catch_block
  59. %9 = call i8* (i8*, ...)* @__cxa_begin_catch(i8* %4)
  60. %10 = load i32* %0
  61. %11 = sext i32 %10 to i64
  62. %12 = icmp eq i64 %11, 1
  63. %13 = zext i1 %12 to i8
  64. %14 = trunc i8 %13 to i1
  65. br i1 %14, label %true, label %false
  66.  
  67. catch_continue: ; preds = %catch_block
  68. %15 = call i8* (i8*, ...)* @__cxa_begin_catch(i8* %4)
  69. invoke void @__cxa_rethrow()
  70. to label %unreachable unwind label %landingpad3
  71.  
  72. true: ; preds = %catch_target
  73. %16 = load i8* %9
  74. %17 = trunc i8 %16 to i1
  75. br label %false
  76.  
  77. false: ; preds = %true, %catch_target
  78. %18 = phi i1 [ %14, %catch_target ], [ %17, %true ]
  79. %19 = zext i1 %18 to i8
  80. call void @__cxa_end_catch()
  81. ret i8 %19
  82.  
  83. landingpad3: ; preds = %catch_continue
  84. %20 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
  85. cleanup
  86. call void @__cxa_end_catch()
  87. %exn.obj = extractvalue { i8*, i32 } %20, 0
  88. call void @_Unwind_Resume(i8* %exn.obj)
  89. unreachable
  90.  
  91. unreachable: ; preds = %catch_continue
  92. unreachable
  93. }
  94.  
  95. declare i32 @__gxx_personality_v0(...)
  96.  
  97. ; Function Attrs: nounwind readnone
  98. declare i32 @llvm.eh.typeid.for(i8*) #1
  99.  
  100. declare i8* @__cxa_begin_catch(i8*, ...)
  101.  
  102. declare void @__cxa_end_catch()
  103.  
  104. declare void @__cxa_rethrow()
  105.  
  106. define linkonce_odr x86_thiscallcc void @_ZN1TC1EPi(%struct.T* %this, i32* %ptr) unnamed_addr #0 align 2 {
  107. entry:
  108. %this.addr = alloca %struct.T*, align 4
  109. %ptr.addr = alloca i32*, align 4
  110. store %struct.T* %this, %struct.T** %this.addr, align 4
  111. store i32* %ptr, i32** %ptr.addr, align 4
  112. %this1 = load %struct.T** %this.addr
  113. %0 = load i32** %ptr.addr, align 4
  114. call x86_thiscallcc void @_ZN1TC2EPi(%struct.T* %this1, i32* %0)
  115. ret void
  116. }
  117.  
  118. ; Function Attrs: nounwind
  119. define linkonce_odr x86_thiscallcc void @_ZN1TD1Ev(%struct.T* %this) unnamed_addr #2 align 2 {
  120. entry:
  121. %this.addr = alloca %struct.T*, align 4
  122. store %struct.T* %this, %struct.T** %this.addr, align 4
  123. %this1 = load %struct.T** %this.addr
  124. call x86_thiscallcc void @_ZN1TD2Ev(%struct.T* %this1) #3
  125. ret void
  126. }
  127.  
  128. ; Function Attrs: nounwind
  129. define linkonce_odr x86_thiscallcc void @_ZN1TD2Ev(%struct.T* %this) unnamed_addr #2 align 2 {
  130. entry:
  131. %this.addr = alloca %struct.T*, align 4
  132. store %struct.T* %this, %struct.T** %this.addr, align 4
  133. %this1 = load %struct.T** %this.addr
  134. %ptr1 = bitcast %struct.T* %this1 to i32**
  135. %0 = load i32** %ptr1, align 4
  136. %1 = load i32* %0, align 4
  137. %inc = add nsw i32 %1, 1
  138. store i32 %inc, i32* %0, align 4
  139. ret void
  140. }
  141.  
  142. ; Function Attrs: nounwind
  143. define linkonce_odr x86_thiscallcc void @_ZN1TC2EPi(%struct.T* %this, i32* %ptr) unnamed_addr #2 align 2 {
  144. entry:
  145. %this.addr = alloca %struct.T*, align 4
  146. %ptr.addr = alloca i32*, align 4
  147. store %struct.T* %this, %struct.T** %this.addr, align 4
  148. store i32* %ptr, i32** %ptr.addr, align 4
  149. %this1 = load %struct.T** %this.addr
  150. %ptr21 = bitcast %struct.T* %this1 to i32**
  151. %0 = load i32** %ptr.addr, align 4
  152. store i32* %0, i32** %ptr21, align 4
  153. ret void
  154. }
  155.  
  156. declare void @_Unwind_Resume(i8*)
  157.  
  158. attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="0" "unsafe-fp-math"="false" "use-soft-float"="false" }
  159. attributes #1 = { nounwind readnone }
  160. attributes #2 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="0" "unsafe-fp-math"="false" "use-soft-float"="false" }
  161. attributes #3 = { nounwind }
  162. attributes #4 = { noreturn }
  163.  
  164. !llvm.ident = !{!0, !0}
  165.  
  166. !0 = !{!"clang version 3.6.1 (tags/RELEASE_361/final)"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement