pass-purpose

编译流水线 Pass 设计目的(问题与语言特性)

前端

  1. SimplExpr(Csyntax → Clight)
  1. SimplLocals(Clight → Clight)
  1. Cshmgen(Clight → Csharpminor)
  1. Cminorgen(Csharpminor → Cminor)

后端(RTL 阶段优化)

  1. Selection(Cminor → CminorSel)
  1. RTLgen(CminorSel → RTL)
  1. Tailcall(RTL → RTL)
  1. Inlining(RTL → RTL)
  1. Renumber(RTL → RTL)
  1. Constprop(RTL → RTL)
  1. CSE(RTL → RTL)
  1. Deadcode(RTL → RTL)
  1. Unusedglob(RTL 程序级)

后端(寄存器/控制流/栈/汇编)

  1. Allocation(RTL → LTL)
  1. Tunneling(LTL → LTL)
  1. Linearize(LTL → Linear)
  1. CleanupLabels(Linear → Linear)
  1. Debugvar(Linear → Linear)
  1. Stacking(Linear → Mach)
  1. Asmgen(Mach → Asm)
  1. Asmexpand(Asm → Asm)