Is there a more straightforward way to find $op_A where $op_A->sibling( $op_B ) when you have $op_B? I have B::Utils and B::Generate loaded. I am not using ->kids because it avoids null nodes but sometimes the node being searched from is a null node.
# Maybe find the opcode that thinks this opcode is its sibling by # going to this opcode's parent and walking over the list of siblings # until this one is reached. The previously visited opcode is the one # we're after. my $orig_reverse_sibling; { my $prev; for ( my $sibling = $op->parent->first; $sibling; $sibling = $sibling->sibling ) { if ( $sibling == $op ) { $orig_reverse_sibling = $prev; last; } else { $prev = $sibling; } } }
In reply to Find opcode's reverse sibling? by diotalevi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |