flâneur — a map of the web's best reading

Understanding static single assignment forms

blog.yossarian.net · 4,435 words · saved by 1 readers

By popular demand, I’m doing another LLVM post. This time, it’s single static assignment (or SSA) form, a common feature in the intermediate representations of optimizing compilers. Like the last one, SSA is a topic in compiler and IR design that I mostly understand but could benefit from some self-guided education on. So here we are. At the highest level, a compiler’s job is singular: to turn some source language input into some machine language output. Internally, this breaks down into a sequence of clearly delineated1 tasks: In a single-pass compiler, (4) is monolithic: machine code is generated as the compiler walks the AST, with no revisiting of previously generated code. This is extremely fast (in terms of compiler performance) in exchange for some a few significant limitations: Optimization potential: because machine code is generated in a single pass, it can’t be revisited for optimizations. Single-pass compilers tend to generate extremely slow and conservative machine code. By

Understanding static single assignment forms ENOSUCHBLOG Programming, philosophy, pedaling. Home Tags Series Favorites Archive Main Site TILs Understanding static single assignment forms Oct 23, 2020 Tags: llvm , programming This post is at least a year old. With thanks to Niki Carroll , winny, and kurufu for their invaluable proofreading and advice. Preword # By popular demand , I’m doing another LLVM post. This time, it’s single static assignment (or SSA) form, a common feature in the intermediate representations of optimizing compilers. Like the last one , SSA is a topic in compiler and IR

Explore this link on the map →

saved by

related reading