从分支指令中提取 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<>()
函数执行转换。
分支指令包含标签,这些标签是它可能跳转到的基本块的名称。鉴于此,有没有办法从分支指令中提取 MachineBasicBlock 对象?例如:
for(MachineBasicBlock &BB : MF){
for(MachineInstr &MI : BB){
if(MI.isConditionalBranch()){
MachineBasicBlock &InstBB = something(MI.getOperand(0));
}
}
}
首先将 MI
的操作数转换为 BasicBlockSDNode,然后使用 getBasicBlock()
。请记住使用 LLVM cast<>()
函数执行转换。