oplist#
Return every op reachable from this one in execution order.
Synopsis#
my @ops = B::main_root->oplist;
Follows op_next and also descends the side chains it does not thread through - a LOGOP’s other, a LOOP’s redoop/nextop/lastop, a substitution’s replacement, and a sort block’s comparator.
This clears op_opt on every op it visits, which is how it avoids walking a shared branch twice. Run it after the peephole optimiser, and expect B::OP::opt to read 0 afterwards.