]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
the IR won't create globals of the same name - make names starting with # an exception
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Fri, 20 Jul 2012 19:36:37 +0000 (21:36 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Fri, 20 Jul 2012 19:36:37 +0000 (21:36 +0200)
ast.c
ir.c

diff --git a/ast.c b/ast.c
index d519919ac10b50504b4c0e7d846be66c6cb5fe90..b1922729093106c3ae5690130f0f5d77df9d583e 100644 (file)
--- a/ast.c
+++ b/ast.c
@@ -510,8 +510,10 @@ bool ast_global_codegen(ast_value *self, ir_builder *ir)
     }
 
     v = ir_builder_create_global(ir, self->name, self->expression.vtype);
-    if (!v)
+    if (!v) {
+        printf("ir_builder_create_global failed\n");
         return false;
+    }
 
     if (self->isconst) {
         switch (self->expression.vtype)
diff --git a/ir.c b/ir.c
index ef6791069096441e9d91f57f6ad53a0257222399..21d8eac5a0724a7b09fec1eee7c63989dec342c2 100644 (file)
--- a/ir.c
+++ b/ir.c
@@ -206,9 +206,14 @@ ir_value* ir_builder_get_global(ir_builder *self, const char *name)
 
 ir_value* ir_builder_create_global(ir_builder *self, const char *name, int vtype)
 {
-    ir_value *ve = ir_builder_get_global(self, name);
-    if (ve) {
-        return NULL;
+    ir_value *ve;
+
+    if (name && name[0] != '#')
+    {
+        ve = ir_builder_get_global(self, name);
+        if (ve) {
+            return NULL;
+        }
     }
 
     ve = ir_value_var(name, store_global, vtype);