[LLVMdev] Splitting basic blocks while preserving machine code
Trevor Harmon
Trevor.W.Harmon at nasa.gov
Wed Oct 20 17:16:49 PDT 2010
Hi,
I'm writing a pass that does some static analysis on C code. A
critical requirement of the pass is that it must preserve not only the
correctness of the code but also its timing -- It cannot add or remove
even one CPU cycle from the resulting machine code. To put it another
way, the binary executable that is produced when the pass is present
must be identical to what is produced when the pass is not present.
That said, I have run into a situation where it would help to split
certain basic blocks, probably by calling BasicBlock::splitBasicBlock.
But this method adds an unconditional branch instruction. Would this
new instruction alter the machine code that is later generated, or
would the additional branch somehow be optimized away in subsequent
passes?
Thanks,
Trevor
More information about the llvm-dev
mailing list