2

可能な前任者が 1 つしかない場合に phi ノードを使用する利点は何ですか? たとえば、 を実行するopt -loop-<some specific pass> some-cool-file.ll -Sと、まだ先行ノードを追加していない場合、出力には、可能性のある先行ノードが 1 つしかない phi ノードが含まれることがよくあります。

例:

endcond.loopexit:                      ; preds = %loop <- note: one predecessor
  %res.lcssa = phi i64 [ %res, %loop ] ; I'm assuming this is from the
  br label %endcond                    ; loop-closed ssa form pass

endcond:
  %var = phi i64 [ %res.lcssa, %endcond.loopexit ], <other-pred>

可能な前任者が1つしかない場合、上記は次とまったく同じであってはなりません

endcond.loopexit:                      ; preds = %loop 
  br label %endcond                    ; res assigned a value in %loop

endcond:
  %var = phi i64 [ %res, %endcond.loopexit ], <other-pred> ; use %res directly

誤解しないでほしいのですが、私は phi ノードの大ファンですが、可能性のある前任者が 1 つしかない場合に phi ノードを追加するときに、読みやすさと警告の改善以外に他の利点があるかどうかに興味がありました。

4

1 に答える 1