Advertisement
Guest User

Untitled

a guest
May 28th, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. type b1 {
  2. type() {}
  3. dynamic f() { return false; }
  4. }
  5. type b2 {
  6. type() {}
  7. dynamic g() { return false; }
  8. }
  9. type der : b1 : b2 {
  10. type() {}
  11. f() { return true; }
  12. g() { return true; }
  13. }
  14. f(arg1 := b1.lvalue, arg2 := b2.lvalue) {
  15. return arg1.f() & arg2.g();
  16. }
  17. Main() {
  18. var := der();
  19. return f(var, var);
  20. }
  21.  
  22. ; ModuleID = 'Wide'
  23. target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
  24. target triple = "x86_64-unknown-linux-gnu"
  25.  
  26. %struct.__0x2f2d310 = type { %struct.__0x2f331a0, %struct.__0x2f35a70, i32 ()** }
  27. %struct.__0x2f331a0 = type { i32 ()** }
  28. %struct.__0x2f35a70 = type { i32 ()** }
  29. %"0x2f39a80" = type { i8 }
  30. %struct.__0x2f62fb0 = type { %struct.__0x2f331a0* }
  31. %"0x2f385e0" = type { i8 }
  32. %struct.__0x2f68b20 = type { %struct.__0x2f35a70* }
  33. %"0x2f3f4c0" = type { i8 }
  34. %"0x2f425a0" = type { i8 }
  35. %"0x2f31de0" = type { i8 }
  36. %"0x2f5e8f0" = type { i8 }
  37.  
  38. @"0x2f4eec0" = internal constant [1 x i32 ()*] [i32 ()* bitcast (i8 (%struct.__0x2f35a70*)* @__0x2f385e0 to i32 ()*)]
  39. @"0x2f4ba50" = internal constant [1 x i32 ()*] [i32 ()* bitcast (i8 (%struct.__0x2f331a0*)* @__0x2f39a80 to i32 ()*)]
  40. @"0x2f50490" = internal constant [1 x i32 ()*] [i32 ()* bitcast (i8 (%struct.__0x2f2d310*)* @__0x2f46b00 to i32 ()*)]
  41. @"0x2f51220" = internal constant [1 x i32 ()*] [i32 ()* bitcast (i8 (%struct.__0x2f2d310*)* @__0x2f510d08 to i32 ()*)]
  42. @"0x2f51ec0" = internal constant [2 x i32 ()*] [i32 ()* bitcast (i8 (%struct.__0x2f2d310*)* @__0x2f47ea0 to i32 ()*), i32 ()* bitcast (i8 (%struct.__0x2f2d310*)* @__0x2f46b00 to i32 ()*)]
  43.  
  44. define internal i8 @__0x2f47ea0(%struct.__0x2f2d310*) {
  45. entry:
  46. ret i8 1
  47. }
  48.  
  49. define internal i8 @__0x2f46b00(%struct.__0x2f2d310*) {
  50. entry:
  51. ret i8 1
  52. }
  53.  
  54. define internal void @__0x2f425a0(%struct.__0x2f35a70*) {
  55. entry:
  56. %1 = bitcast %struct.__0x2f35a70* %0 to i32 ()***
  57. store i32 ()** getelementptr inbounds ([1 x i32 ()*]* @"0x2f4eec0", i32 0, i32 0), i32 ()*** %1
  58. ret void
  59. }
  60.  
  61. define internal i8 @__0x2f385e0(%struct.__0x2f35a70*) {
  62. entry:
  63. ret i8 0
  64. }
  65.  
  66. define internal i8 @__0x2f5e8f0(%struct.__0x2f331a0*, %struct.__0x2f35a70*) {
  67. entry:
  68. %2 = alloca i8, align 1
  69. %3 = alloca i8*, align 8
  70. %4 = alloca i8, align 1
  71. %5 = alloca %"0x2f39a80", align 1
  72. %6 = load %"0x2f39a80"* %5
  73. %7 = alloca %struct.__0x2f62fb0, align 8
  74. %8 = load %struct.__0x2f62fb0* %7
  75. %9 = insertvalue %struct.__0x2f62fb0 zeroinitializer, %struct.__0x2f331a0* %0, 0
  76. store %struct.__0x2f62fb0 %9, %struct.__0x2f62fb0* %7
  77. %10 = load %struct.__0x2f62fb0* %7
  78. %11 = extractvalue %struct.__0x2f62fb0 %10, 0
  79. %12 = call i8 @__0x2f39a80(%struct.__0x2f331a0* %11)
  80. store i8 %12, i8* %4
  81. store i8* %4, i8** %3
  82. %13 = load i8** %3
  83. %14 = load i8* %13
  84. store i8 %14, i8* %2
  85. %15 = load i8* %2
  86. %16 = alloca %"0x2f385e0", align 1
  87. %17 = load %"0x2f385e0"* %16
  88. %18 = alloca %struct.__0x2f68b20, align 8
  89. %19 = load %struct.__0x2f68b20* %18
  90. %20 = insertvalue %struct.__0x2f68b20 zeroinitializer, %struct.__0x2f35a70* %1, 0
  91. store %struct.__0x2f68b20 %20, %struct.__0x2f68b20* %18
  92. %21 = load %struct.__0x2f68b20* %18
  93. %22 = extractvalue %struct.__0x2f68b20 %21, 0
  94. %23 = call i8 @__0x2f385e0(%struct.__0x2f35a70* %22)
  95. %24 = and i8 %15, %23
  96. store i8 %24, i8* %2
  97. %25 = load i8* %2
  98. ret i8 %25
  99. }
  100.  
  101. define internal i8 @__0x2f39a80(%struct.__0x2f331a0*) {
  102. entry:
  103. ret i8 0
  104. }
  105.  
  106. define internal void @__0x2f3f4c0(%struct.__0x2f331a0*) {
  107. entry:
  108. %1 = bitcast %struct.__0x2f331a0* %0 to i32 ()***
  109. store i32 ()** getelementptr inbounds ([1 x i32 ()*]* @"0x2f4ba50", i32 0, i32 0), i32 ()*** %1
  110. ret void
  111. }
  112.  
  113. define internal void @__0x2f31de0(%struct.__0x2f2d310*) {
  114. entry:
  115. %1 = alloca %"0x2f3f4c0", align 1
  116. %2 = load %"0x2f3f4c0"* %1
  117. %3 = bitcast %struct.__0x2f2d310* %0 to %struct.__0x2f331a0*
  118. call void @__0x2f3f4c0(%struct.__0x2f331a0* %3)
  119. %4 = alloca %"0x2f425a0", align 1
  120. %5 = load %"0x2f425a0"* %4
  121. %6 = getelementptr inbounds %struct.__0x2f2d310* %0, i32 0, i32 1
  122. call void @__0x2f425a0(%struct.__0x2f35a70* %6)
  123. %7 = bitcast %struct.__0x2f2d310* %0 to %struct.__0x2f331a0*
  124. %8 = bitcast %struct.__0x2f331a0* %7 to i32 ()***
  125. store i32 ()** getelementptr inbounds ([1 x i32 ()*]* @"0x2f50490", i32 0, i32 0), i32 ()*** %8
  126. %9 = getelementptr inbounds %struct.__0x2f2d310* %0, i32 0, i32 1
  127. %10 = bitcast %struct.__0x2f35a70* %9 to i32 ()***
  128. store i32 ()** getelementptr inbounds ([1 x i32 ()*]* @"0x2f51220", i32 0, i32 0), i32 ()*** %10
  129. %11 = getelementptr inbounds %struct.__0x2f2d310* %0, i32 0, i32 2
  130. store i32 ()** getelementptr inbounds ([2 x i32 ()*]* @"0x2f51ec0", i32 0, i32 0), i32 ()*** %11
  131. ret void
  132. }
  133.  
  134. define internal i8 @__0x2f510d08(%struct.__0x2f2d310*) {
  135. entry:
  136. %1 = bitcast %struct.__0x2f2d310* %0 to i8*
  137. %2 = getelementptr i8* %1, i32 -8
  138. %3 = bitcast i8* %2 to %struct.__0x2f2d310*
  139. %4 = call i8 @__0x2f47ea0(%struct.__0x2f2d310* %3)
  140. ret i8 %4
  141. }
  142.  
  143. define internal i8 @__0x2f2c740() {
  144. entry:
  145. %0 = alloca %"0x2f31de0", align 1
  146. %1 = load %"0x2f31de0"* %0
  147. %2 = alloca %struct.__0x2f2d310, align 8
  148. call void @__0x2f31de0(%struct.__0x2f2d310* %2)
  149. %3 = load %struct.__0x2f2d310* %2
  150. %4 = alloca %struct.__0x2f2d310, align 8
  151. store %struct.__0x2f2d310 %3, %struct.__0x2f2d310* %4
  152. %5 = alloca %"0x2f5e8f0", align 1
  153. %6 = load %"0x2f5e8f0"* %5
  154. %7 = alloca %struct.__0x2f331a0*, align 8
  155. %8 = bitcast %struct.__0x2f2d310* %4 to %struct.__0x2f331a0*
  156. store %struct.__0x2f331a0* %8, %struct.__0x2f331a0** %7
  157. %9 = load %struct.__0x2f331a0** %7
  158. %10 = alloca %struct.__0x2f35a70*, align 8
  159. %11 = getelementptr inbounds %struct.__0x2f2d310* %4, i32 0, i32 1
  160. store %struct.__0x2f35a70* %11, %struct.__0x2f35a70** %10
  161. %12 = load %struct.__0x2f35a70** %10
  162. %13 = call i8 @__0x2f5e8f0(%struct.__0x2f331a0* %9, %struct.__0x2f35a70* %12)
  163. ret i8 %13
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement