Moduleghc-9.10.3GHC2021
GHC.CmmToAsm.X86.CodeGen
- 1 type
- 4 values
- Packageghc-9.10.3
- Exports5
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceCodeGen.hs
value
invertCondBranches :: Maybe CFGCFG if present
-> LabelMap aBlocks with info tables
-> [NatBasicBlock Instr]List of basic blocks
-> [NatBasicBlock Instr]
This works on the invariant that all jumps in the given blocks are required. Starting from there we try to make a few more jumps redundant by reordering them. We depend on the information in the CFG to do so so without a given CFG we do nothing.
InstrBlocks are the insn sequences generated by the insn selectors. They are really trees of insns to facilitate fast appending, where a left-to-right traversal yields the insns in the correct order.