summaryrefslogtreecommitdiffstats
path: root/content/zettel/2e1e.md
blob: 5c0802b22847a233187f88f42a6688e46a54fc6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
+++
title = "Static single assignment"
author = "Yann Herklotz"
tags = []
categories = []
backlinks = ["2e1d"]
forwardlinks = ["2e1f"]
zettelid = "2e1e"
+++

Static single assignment (SSA) is an intermediate language that is very
useful for the analysis and transformation for various optimisations
that require data-flow analysis. In standard intermediate languages,
registers can be reused, which means it can be quite tricky to analyse
the liveness and current value of each register. However, if only one
assignment can be made to a register, then it is much easier to perform
symbolic analysis on the intermediate representation, because all the
registers are fresh. Therefore no sequential substitution needs to be
done when performing the evaluation, and it's only necessary to
substitute in the values for the registers directly.