message: make transform::visit non-recursive
  Summary:
  It looks like transform::visit was overflowing the stack on a method with 329
  blocks (but only with -O0). I don't want to break debug builds, but I don't
  want to disallow recursion on the CFG either.
  fix
diff: */
  #include "Transform.h"
  +
  +#include <stack>
  +
  #include "ControlFlow.h"
  namespace {
  @@ -90,13 +93,21 @@ static size_t remove_block(IRCode* code, Block* b) {
  return insns_removed;
  }
  -void visit(Block* b, std::unordered_set<Block*>& visited) {
  +void visit(Block* start, std::unordered_set<Block*>& visited) {
  + std::stack<Block*> to_visit;
  + to_visit.push(start);
  + while (!to_visit.empty()) {
  + Block* b = to_visit.top();
  + to_visit.pop();
  +
  if (visited.find(b) != visited.end()) {
  - return;
  + continue;
  }
  visited.emplace(b);
  +
  for (auto& s : b->succs()) {
  - visit(s, visited);
  + to_visit.push(s);
  + }
  }
  }
  