Guest User

Untitled

a guest
Sep 11th, 2017
375
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
LLVM 2.92 KB | None | 0 0
  1.  
  2. define void @hoge() {
  3. bb:
  4.   br label %bb1
  5.  
  6. bb1:                                              ; preds = %bb12, %bb
  7.   %tmp = phi i32 [ 0, %bb ], [ 1, %bb12 ]
  8.   br label %bb3
  9.  
  10.  
  11. bb3:                                              ; preds = %bb8, %bb2
  12.   %tmp4 = phi i32 [ %tmp, %bb1 ], [ %tmp9, %bb8 ]
  13.   br i1 undef, label %bb12, label %bb5
  14.  
  15. bb5:                                              ; preds = %bb10, %bb3
  16.   %tmp6 = phi i32 [ %tmp11, %bb10 ], [ %tmp4, %bb3 ]
  17.   br label %bb7
  18.  
  19. bb7:                                              ; preds = %bb5
  20.   br i1 undef, label %bb10, label %bb8
  21.  
  22. bb8:                                              ; preds = %bb7
  23.   %tmp9 = phi i32 [ %tmp6, %bb7 ]
  24.   br label %bb3
  25.  
  26. bb10:                                             ; preds = %bb7
  27.   %tmp11 = phi i32 [ %tmp6, %bb7 ]
  28.   br label %bb5
  29.  
  30. bb12:                                             ; preds = %bb3
  31.   br label %bb1
  32. }
  33.  
  34.  
  35. RPO order is as display.
  36. RPO VN algorithm applied without unreachable edge elimination
  37.  
  38. VN(tmp) = meet(0, 1) = tmp
  39. VN(tmp4) = meet(VN(tmp), VN(tmp9)) = meet(tmp, TOP) = tmp
  40. VN(tmp6) = meet(VN(tmp11), VN(tmp4)) = meet(TOP, tmp) = tmp
  41. VN(tmp9) = meet(VN(tmp6)) = meet(tmp) = tmp
  42. VN(tmp11) = meet(VN(tmp6)) = meet(tmp) = tmp
  43.  
  44. End state at iteration 1:
  45. VN(tmp) = tmp
  46. VN(tmp4) = tmp
  47. VN(tmp6) = tmp
  48. VN(tmp9) = tmp
  49. VN(tmp11) = tmp
  50.  
  51. Iteration 2:
  52.  
  53. VN(tmp) = meet(0, 1) = tmp
  54. VN(tmp4) = meet(VN(tmp), VN(tmp9)) = meet(tmp, tmp) = tmp
  55. VN(tmp6) = meet(VN(tmp11), VN(tmp4)) = meet(tmp, tmp) = tmp
  56. VN(tmp9) = meet(VN(tmp6)) = meet(tmp) = tmp
  57. VN(tmp11) = meet(VN(tmp6)) = meet(tmp) = tmp
  58.  
  59. End state at iteration 2:
  60. VN(tmp) = tmp
  61. VN(tmp4) = tmp
  62. VN(tmp6) = tmp
  63. VN(tmp9) = tmp
  64. VN(tmp11) = tmp
  65.  
  66. we are done.
  67.  
  68.  
  69. Same algorithm, initially ignoring unreachable edges.
  70. In this case, that's bb12->bb1 to start
  71.  
  72. VN(tmp) = meet(0, unreachable) = 0
  73. VN(tmp4) = meet(VN(tmp), VN(tmp9)) = meet(0, TOP) = 0
  74. VN(tmp6) = meet(VN(tmp11), VN(tmp4)) = meet(TOP, 0) = 0
  75. VN(tmp9) = meet(VN(tmp6)) = meet(tmp) = 0
  76. VN(tmp11) = meet(VN(tmp6)) = meet(tmp) = 0
  77. bb12->bb1 is marked reachable
  78.  
  79. End state at iteration 1:
  80. VN(tmp) = 0
  81. VN(tmp4) = 0
  82. VN(tmp6) = 0
  83. VN(tmp9) = 0
  84. VN(tmp11) = 0
  85.  
  86. Iteration 2:
  87.  
  88. VN(tmp) = meet(0, 1) = tmp
  89. VN(tmp4) = meet(VN(tmp), VN(tmp9)) = meet(tmp, 0) = tmp4
  90. VN(tmp6) = meet(VN(tmp11), VN(tmp4)) = meet(0, tmp4) = tmp6
  91. VN(tmp9) = meet(VN(tmp6)) = meet(tmp6) = tmp6
  92. VN(tmp11) = meet(VN(tmp6)) = meet(tmp6) = tmp6
  93.  
  94. End state at iteration 2:
  95. VN(tmp) = tmp
  96. VN(tmp4) = tmp4
  97. VN(tmp6) = tmp6
  98. VN(tmp9) = tmp6
  99. VN(tmp11) = tmp6
  100.  
  101. Iteration 3:
  102.  
  103. VN(tmp) = meet(0, 1) = tmp
  104. VN(tmp4) = meet(VN(tmp), VN(tmp9)) = meet(tmp, tmp6) = tmp4
  105. VN(tmp6) = meet(VN(tmp11), VN(tmp4)) = meet(tmp6, tmp4) = tmp6
  106. VN(tmp9) = meet(VN(tmp6)) = meet(tmp6) = tmp6
  107. VN(tmp11) = meet(VN(tmp6)) = meet(tmp6) = tmp6
  108.  
  109. End state at iteration 3:
  110. VN(tmp) = tmp
  111. VN(tmp4) = tmp4
  112. VN(tmp6) = tmp6
  113. VN(tmp9) = tmp6
  114. VN(tmp11) = tmp6
  115.  
  116. we are done.
Advertisement
Add Comment
Please, Sign In to add comment