mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-11 19:51:28 +00:00
add AINSTR_END to the end of functions so the debug-printing knows when to end...
This commit is contained in:
parent
7245b675b2
commit
29091971d2
2 changed files with 23 additions and 9 deletions
9
ir.c
9
ir.c
|
@ -2310,6 +2310,7 @@ tailcall:
|
||||||
static bool gen_function_code(ir_function *self)
|
static bool gen_function_code(ir_function *self)
|
||||||
{
|
{
|
||||||
ir_block *block;
|
ir_block *block;
|
||||||
|
prog_section_statement stmt;
|
||||||
|
|
||||||
/* Starting from entry point, we generate blocks "as they come"
|
/* Starting from entry point, we generate blocks "as they come"
|
||||||
* for now. Dead blocks will not be translated obviously.
|
* for now. Dead blocks will not be translated obviously.
|
||||||
|
@ -2327,6 +2328,14 @@ static bool gen_function_code(ir_function *self)
|
||||||
printf("failed to generate blocks for '%s'\n", self->name);
|
printf("failed to generate blocks for '%s'\n", self->name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* otherwise code_write crashes since it debug-prints functions until AINSTR_END */
|
||||||
|
stmt.opcode = AINSTR_END;
|
||||||
|
stmt.o1.u1 = 0;
|
||||||
|
stmt.o2.u1 = 0;
|
||||||
|
stmt.o3.u1 = 0;
|
||||||
|
if (code_statements_add(stmt) < 0)
|
||||||
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,8 @@ int main()
|
||||||
DEFVAR(f5);
|
DEFVAR(f5);
|
||||||
DEFVAR(print);
|
DEFVAR(print);
|
||||||
|
|
||||||
|
/* opts_debug = true; */
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
BUILTIN(print, TYPE_VOID, -1);
|
BUILTIN(print, TYPE_VOID, -1);
|
||||||
PARAM(TYPE_STRING, text);
|
PARAM(TYPE_STRING, text);
|
||||||
|
@ -43,19 +45,22 @@ MKCONSTFLOAT(f0, 0.0);
|
||||||
MKCONSTFLOAT(f1, 1.0);
|
MKCONSTFLOAT(f1, 1.0);
|
||||||
MKCONSTFLOAT(f5, 5.0);
|
MKCONSTFLOAT(f5, 5.0);
|
||||||
|
|
||||||
|
FUNCTION(foo, TYPE_VOID);
|
||||||
|
ENDFUNCTION(foo);
|
||||||
|
|
||||||
FUNCTION(main, TYPE_VOID);
|
FUNCTION(main, TYPE_VOID);
|
||||||
|
|
||||||
VAR(TYPE_FLOAT, vi);
|
VAR(TYPE_FLOAT, vi);
|
||||||
VAR(TYPE_FLOAT, vx);
|
VAR(TYPE_FLOAT, vx);
|
||||||
|
|
||||||
MKLOCAL(vi);
|
MKLOCAL(vi);
|
||||||
MKLOCAL(vx);
|
MKLOCAL(vx);
|
||||||
|
|
||||||
STATE(ASSIGN(STORE_F, vi, f0));
|
STATE(ASSIGN(STORE_F, vi, f0));
|
||||||
WHILE(BIN(LT, vi, f5));
|
WHILE(BIN(LT, vi, f5));
|
||||||
STATE(ASSIGN(STORE_F, vx, BIN(MUL_F, vi, f5)));
|
STATE(ASSIGN(STORE_F, vx, BIN(MUL_F, vi, f5)));
|
||||||
STATE(ASSIGN(STORE_F, vi, BIN(ADD_F, vi, f1)));
|
STATE(ASSIGN(STORE_F, vi, BIN(ADD_F, vi, f1)));
|
||||||
ENDWHILE();
|
ENDWHILE();
|
||||||
|
|
||||||
ENDFUNCTION(main);
|
ENDFUNCTION(main);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue