+++ title = "Issues caused by adding new nodes" author = "Yann Herklotz" tags = [] categories = [] backlinks = ["3a8g3"] forwardlinks = ["3a8g5", "3a8g4a"] zettelid = "3a8g4" +++ However, more issues are caused by adding new nodes to the control-flow graph, which are specific to how CompCertSSA represents and handles φ functions. The predecessors function is directly dependent on the order in which the predecessors are visited, and it is therefore quite dependent on the control-flow graph layout. Even small changes in the nodes of the graph can change the order of the predecessors. This means that the predecessors for the nodes need to be recalculated. Previously, SSA optimisations did not really edit the control-flow graph much, and therefore never ran into this problem of having to rebuild the predecessors of phi functions. However, as we add moves into the control-flow graph to eliminate the η functions, this means that it does change, and that there is a chance it could move around the predecessors (this was found to be the case in the `clause.c` test case). In addition to that, GSA in general should not be dependent on the order of the arguments of the Ɣ function, so these should be able to be reordered without any issues.