-bool GMQCC_WARN ir_value_set_float(ir_value*, float f);
-bool GMQCC_WARN ir_value_set_func(ir_value*, int f);
-#if 0
-bool GMQCC_WARN ir_value_set_int(ir_value*, int i);
-#endif
-bool GMQCC_WARN ir_value_set_string(ir_value*, const char *s);
-bool GMQCC_WARN ir_value_set_vector(ir_value*, vector v);
-bool GMQCC_WARN ir_value_set_field(ir_value*, ir_value *fld);
-/*bool ir_value_set_pointer_v(ir_value*, ir_value* p); */
-/*bool ir_value_set_pointer_i(ir_value*, int i); */
-bool GMQCC_WARN ir_value_set_quaternion(ir_value*, quaternion v);
-bool GMQCC_WARN ir_value_set_matrix(ir_value*, matrix v);
-
-MEM_VECTOR_PROTO(ir_value, ir_life_entry_t, life);
-/* merge an instruction into the life-range */
-/* returns false if the lifepoint was already known */
-bool ir_value_life_merge(ir_value*, size_t);
-bool ir_value_life_merge_into(ir_value*, const ir_value*);
-/* check if a value lives at a specific point */
-bool ir_value_lives(ir_value*, size_t);
-/* check if the life-range of 2 values overlaps */
-bool ir_values_overlap(const ir_value*, const ir_value*);
-
-void ir_value_dump(ir_value*, int (*oprintf)(const char*,...));
-void ir_value_dump_life(ir_value *self, int (*oprintf)(const char*,...));
-
-/* A vector of IR values */
-typedef struct {
- MEM_VECTOR_MAKE(ir_value*, v);
-} ir_value_vector;
-MEM_VECTOR_PROTO(ir_value_vector, ir_value*, v);
-
-/* PHI data */
-typedef struct ir_phi_entry_s
-{
- ir_value *value;
- struct ir_block_s *from;
-} ir_phi_entry_t;
-
-/* instruction */
-typedef struct ir_instr_s
-{
- int opcode;
- lex_ctx context;
- ir_value* (_ops[3]);
- struct ir_block_s* (bops[2]);