Benefits of partial evaluation for initialization code
devPartial evaluation is used to transform initialization functions into constant globals. This is necessary because:
- LLVM Optimization: LLVM optimizes globals with initializers much more effectively than initialization code.
- Dead Code Elimination: Dead globals are easier to optimize away.
- Constant Detection: It allows the compiler to detect constant globals, which enables better propagation and dead code elimination during branching.
- Resource Efficiency: On microcontrollers, constants can be stored in Flash memory instead of consuming precious RAM.