summaryrefslogtreecommitdiffstats
path: root/content/zettel/3a8g4.md
blob: d06546bd3053bcbe904b0841bb7a01cf8cc19a9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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.