summaryrefslogtreecommitdiffstats
path: root/content/zettel/3a8g4.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/zettel/3a8g4.md')
-rw-r--r--content/zettel/3a8g4.md27
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.