virtual void visit(SgNode* n) { SgLabelStatement* l = isSgLabelStatement(n); if (l) { SgName name = l->get_label(); // The label is in some inner scope, and needs to be moved to the // enclosing function definition SgSymbolTable* st = l->get_scope()->get_symbol_table(); ROSE_ASSERT (st); ROSE_ASSERT (st->find_label(name)); st->remove(st->find_label(name)); name << "__" << ++labelRenameCounter; // cout << "Found label " << l->get_label().getString() << " to rename to " << name.getString() << endl; l->set_label(name); l->set_scope(newScope); SgLabelSymbol* lSym = new SgLabelSymbol(l); lSym->set_parent(symtab); symtab->insert(name, lSym); } }