This patch updates several functions in LLVM's IR generation code to accept
an IRBuilder object as an argument, rather than an Instruction that indicates
the insertion point for new instructions.
This change is necessary to handle sophisticated -Ofast optimization cases
from D148558 where it's unclear which instructions should be used as the
insertion point for new operations.
Depends on D148550
Any idea what caused these changes? Is it solely down to using a single IRBuilder instance? Or is there some element of non-determinism with regards to the ordering at this point?