63 std::string generateExprToString(
Expr* expr);
90 void checkStackEffect(
const std::string& s,
int expected,
92 int computeStackEffect(
const std::string& s,
const Range& range);
93 Expr* resolveParamSubstitution(
Expr* expr)
const;
96 const std::vector<std::unique_ptr<Expr>>& args,
101 int num_intermediate_inputs;
102 int label_counter = 0;
103 int call_site_counter = 0;
105 std::map<std::string, Expr*> param_substitutions;
106 std::map<std::string, std::string> var_rename_map;
108 std::vector<int> call_site_id_stack;
110 std::set<std::string> current_function_labels;
CodeGenError(const std::string &message, const Range &r)
std::string generate(const Program *program)
ExprResult generateExpr(Expr *expr)
CodeGenerator(Mode mode, int num_inputs, int num_intermediate_inputs=0)