]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
do not set a function-defs nargs to > 8
authorWolfgang (Blub) Bumiller <blub@speed.at>
Sun, 18 Nov 2012 19:32:06 +0000 (20:32 +0100)
committerWolfgang (Blub) Bumiller <blub@speed.at>
Sun, 18 Nov 2012 19:32:06 +0000 (20:32 +0100)
ir.c

diff --git a/ir.c b/ir.c
index bf27f383a93e6b6c84a93a6144c9c86d3b6dbc1d..025a96ad1a4a820b93fe88e5165d55a68ec6fa63 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -2391,7 +2391,6 @@ static bool gen_global_pointer(ir_value *global)
     return true;
 }
 
-static void ir_gen_extparam(ir_builder *ir);
 static bool gen_blocks_recursive(ir_function *func, ir_block *block)
 {
     prog_section_statement stmt;
@@ -2537,8 +2536,10 @@ tailcall:
                 ir_value *param = instr->params[p];
                 ir_value *target;
 
-                if (p-8 >= vec_size(ir->extparams))
-                    ir_gen_extparam(ir);
+                if (p-8 >= vec_size(ir->extparams)) {
+                    irerror(instr->context, "Not enough extparam-globals have been created");
+                    return false;
+                }
 
                 target = ir->extparams[p-8];
 
@@ -2688,6 +2689,8 @@ static bool gen_global_function(ir_builder *ir, ir_value *global)
     fun.file    = ir_builder_filestring(ir, global->context.file);
     fun.profile = 0; /* always 0 */
     fun.nargs   = vec_size(irfun->params);
+    if (fun.nargs > 8)
+        fun.nargs = 8;
 
     for (i = 0;i < 8; ++i) {
         if (i >= fun.nargs)