diff options
Diffstat (limited to 'content/zettel/3a8g4.md')
-rw-r--r-- | content/zettel/3a8g4.md | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/content/zettel/3a8g4.md b/content/zettel/3a8g4.md new file mode 100644 index 0000000..d06546b --- /dev/null +++ b/content/zettel/3a8g4.md @@ -0,0 +1,27 @@ ++++ +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. |