We use a naming pass which sets the name of any LLVM basic block to "__unk__XX", where XX is a unique number. This pass is run after all canonicalization is done, eg. LoopSimplify, BreakCriticalEdges but before any Needle specific transformations are performed. This is required because we use basic block names to identify the blocks across an epp stage and the needle extraction stage.
This pass can be removed by transformation of the epp and needle phases to a preprocess phase which runs the canonicalization passes, then running opt -instnamer and then running subsequent epp/needle phases.
We use a naming pass which sets the name of any LLVM basic block to "__unk__XX", where XX is a unique number. This pass is run after all canonicalization is done, eg. LoopSimplify, BreakCriticalEdges but before any Needle specific transformations are performed. This is required because we use basic block names to identify the blocks across an epp stage and the needle extraction stage.
This pass can be removed by transformation of the epp and needle phases to a preprocess phase which runs the canonicalization passes, then running
opt -instnamerand then running subsequent epp/needle phases.