&gt; you can simply emit non-ssa form and QBE will fixup things for you<p>That&#x27;s exactly what LLVM does though, except the &quot;non-SSA form&quot; involves loads&#x2F;stores to alloca&#x27;d values. The difference is that in LLVM, the language is <i>always</i> in SSA form, it just has some reads &#x2F; writes to memory that can be pruned, while QBE alternates between being an SSA language and not an SSA language.<p>LLVM also doesn&#x27;t &quot;make&quot; you use stack slots. If you wanted to, you could emit fully pruned programs as LLVM IR. Using allocas for variables is a choice that <i>clang</i> makes.