+static ir_value* ir_value_var(const char *name, int st, int vtype);
+static bool ir_value_set_name(ir_value*, const char *name);
+static void ir_value_dump(ir_value*, int (*oprintf)(const char*,...));
+
+static ir_value* ir_gen_extparam_proto(ir_builder *ir);
+static void ir_gen_extparam (ir_builder *ir);
+
+static bool ir_builder_set_name(ir_builder *self, const char *name);
+
+static ir_function* ir_function_new(struct ir_builder_s *owner, int returntype);
+static bool ir_function_set_name(ir_function*, const char *name);
+static void ir_function_delete(ir_function*);
+static void ir_function_dump(ir_function*, char *ind, int (*oprintf)(const char*,...));
+
+static ir_value* ir_block_create_general_instr(ir_block *self, lex_ctx_t, const char *label,
+ int op, ir_value *a, ir_value *b, int outype);
+static void ir_block_delete(ir_block*);
+static ir_block* ir_block_new(struct ir_function_s *owner, const char *label);
+static bool GMQCC_WARN ir_block_create_store(ir_block*, lex_ctx_t, ir_value *target, ir_value *what);
+static bool ir_block_set_label(ir_block*, const char *label);
+static void ir_block_dump(ir_block*, char *ind, int (*oprintf)(const char*,...));
+
+static bool ir_instr_op(ir_instr*, int op, ir_value *value, bool writing);
+static void ir_instr_delete(ir_instr*);
+static void ir_instr_dump(ir_instr* in, char *ind, int (*oprintf)(const char*,...));