compiler/passes/normalize.cpp
// Now, for each return statement appearing in the function body,
// move the value of its body into the declared return value.
Now, for each return statement appearing in the function body,
move the value of its body into the declared return value.
Now for each return statement appearing in the function body move the value of its body into the declared return value .
for_vector(CallExpr, ret, rets) {
    SET_LINENO(ret);
    if (isIterator == false && retval != NULL) {
      insertRetMove(fn, retval, ret, genericArrayRet);
    }
    if (ret->next != label->defPoint) {
      ret->replace(new GotoStmt(GOTO_RETURN, label));
      labelIsUsed = true;
    } else {
      ret->remove();
    }
  }
for_vector ( CallExpr , ret , rets ) { SET_LINENO ( ret ) ; if ( isIterator == false && retval != NULL ) { insertRetMove ( fn , retval , ret , genericArrayRet ) ; } if ( ret -> next != label -> defPoint ) { ret -> replace ( new GotoStmt ( GOTO_RETURN , label ) ) ; labelIsUsed = true ; } else { ret -> remove ( ) ; } }
Now, for each return statement appearing in the function body,
move the value of its body into the declared return value.
Now for each return statement appearing in the function body move the value of its body into the declared return value .
// replace with GOTO(label)