diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2017-09-22 01:19:23 +0200 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2018-07-01 00:18:44 +0200 |
| commit | 816250ccdf822a304ca3f1f15b789cc61e82f75a (patch) | |
| tree | e2d74bd5e4c4a7bcadd03bd21faf3c84a1b61ee7 /Makefile | |
| parent | 017a4deba447a51d12cd397cd47f666ec20dc2e5 (diff) | |
| download | sparse-dev-816250ccdf822a304ca3f1f15b789cc61e82f75a.tar.gz | |
ssa: phase 1: phi-nodes placement
This implement the first phase of classical SSA conversion:
the placement of phi-nodes at the dominance frontier.
The implementation is rather straight-forward:
* for each pseudo used to make an access do:
* reject cases that can't be converted:
- volatile accesses
- symbols externally visible
- complex types that should not be converted
* scan the concerned instructions and BBs
* if there is only 1 store the loads may be directly
converted (if dominated by the store!)
* if all accesses are in a single BB, then no phi-nodes
are needed and the accesses can be rewritten easily
* otherwise we compute the iterated dominance frontier of
the BBs just scanned and insert the phi-nodes there.
* finally, some cleanup is done on dead stores
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -59,6 +59,7 @@ LIB_OBJS += scope.o LIB_OBJS += show-parse.o LIB_OBJS += simplify.o LIB_OBJS += sort.o +LIB_OBJS += ssa.o LIB_OBJS += sset.o LIB_OBJS += stats.o LIB_OBJS += storage.o |
