How to the get the PHI Nodes in a basic block?

Hi all,
I have an Instruction object I from where I can correctly obtain the parent doing I.getParent(). Now I would like to understand how to obtain the PHI Nodes in that block. Do you suggest to iterate all over the instructions since the PHI nodes are always at the beginning or should I use another approach? What the best way to iterate over the instructions in a block?

Thanks
Alberto

Hi Alberto,

You’ll have to indeed iterate over the instructions, but you don’t have to go through all of them.
You can use MachineBasicBlock::getFirstNonPHI and then iterate backward.

Cheers,
-Quentin

BasicBlock::phis() gives you the range of PHI instructions in that block.

Thanks for the answers. I’ll try it tomorrow.

Alberto