69    std::vector<TernaryBool> stack;
 
   70    void push() { stack.push_back(TernaryBool::No); }
 
   71    void pop() { stack.pop_back(); }
 
   72    void set(TernaryBool r) {
 
   73        BUG_CHECK(!stack.empty(), 
"Empty stack");
 
   76    TernaryBool hasReturned() {
 
   77        BUG_CHECK(!stack.empty(), 
"Empty stack");
 
   83        : variableName(varName), retValName(retValName) {
 
   85        setName(
"DoRemoveReturns");
 
   88    const IR::Node *preorder(IR::Function *function) 
override;
 
   89    const IR::Node *preorder(IR::BlockStatement *statement) 
override;
 
   90    const IR::Node *preorder(IR::ReturnStatement *statement) 
override;
 
   91    const IR::Node *preorder(IR::ExitStatement *statement) 
override;
 
   92    const IR::Node *preorder(IR::IfStatement *statement) 
override;
 
   93    const IR::Node *preorder(IR::SwitchStatement *statement) 
override;
 
   95    const IR::Node *preorder(IR::P4Action *action) 
override;
 
   96    const IR::Node *preorder(IR::P4Control *control) 
override;
 
   97    const IR::Node *preorder(IR::P4Parser *parser)
 override {
 
  102    const IR::Node *postorder(IR::LoopStatement *loop) 
override;