MCPcopy Create free account
hub / github.com/argotorg/solidity / collectBackwardsJumps

Method collectBackwardsJumps

libyul/backends/evm/StackLayoutGenerator.cpp:506–528  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

504}
505
506std::list<std::pair<CFG::BasicBlock const*, CFG::BasicBlock const*>> StackLayoutGenerator::collectBackwardsJumps(CFG::BasicBlock const& _entry) const
507{
508 std::list<std::pair<CFG::BasicBlock const*, CFG::BasicBlock const*>> backwardsJumps;
509 util::BreadthFirstSearch<CFG::BasicBlock const*>{{&_entry}}.run([&](CFG::BasicBlock const* _block, auto _addChild) {
510 std::visit(util::GenericVisitor{
511 [&](CFG::BasicBlock::MainExit const&) {},
512 [&](CFG::BasicBlock::Jump const& _jump)
513 {
514 if (_jump.backwards)
515 backwardsJumps.emplace_back(_block, _jump.target);
516 _addChild(_jump.target);
517 },
518 [&](CFG::BasicBlock::ConditionalJump const& _conditionalJump)
519 {
520 _addChild(_conditionalJump.zero);
521 _addChild(_conditionalJump.nonZero);
522 },
523 [&](CFG::BasicBlock::FunctionReturn const&) {},
524 [&](CFG::BasicBlock::Terminated const&) {},
525 }, _block->exit);
526 });
527 return backwardsJumps;
528}
529
530void StackLayoutGenerator::stitchConditionalJumps(CFG::BasicBlock const& _block)
531{

Callers

nothing calls this directly

Calls 1

runMethod · 0.45

Tested by

no test coverage detected