ghc-8.10.0.20191123: The GHC API
Safe HaskellNone
LanguageHaskell2010

X86.CodeGen

Synopsis

Documentation

invertCondBranches Source #

Arguments

:: Maybe CFG

CFG if present

-> LabelMap a

Blocks 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.

type InstrBlock = OrdList Instr Source #

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.