从分支指令中提取 MachineBasicBlock

Extracting MachineBasicBlock from Branch Instruction

分支指令包含标签,这些标签是它可能跳转到的基本块的名称。鉴于此,有没有办法从分支指令中提取 MachineBasicBlock 对象?例如:

for(MachineBasicBlock &BB : MF){
    for(MachineInstr &MI : BB){
      if(MI.isConditionalBranch()){
        MachineBasicBlock &InstBB = something(MI.getOperand(0));
      }
    }
  }

首先将 MI 的操作数转换为 BasicBlockSDNode,然后使用 getBasicBlock()。请记住使用 LLVM cast<>() 函数执行转换。