]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ir.h
Added a flag to both ast and ir which enforces the generation of a globaldef for...
[xonotic/gmqcc.git] / ir.h
diff --git a/ir.h b/ir.h
index 05b7447d2e2daa391553b4400bae360f8a3a20ec..9a953a6187fbd2a12245c88b59728812cd5f2ea9 100644 (file)
--- a/ir.h
+++ b/ir.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012
+ * Copyright (C) 2012, 2013
  *     Wolfgang Bumiller
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy of
@@ -22,7 +22,7 @@
  */
 #ifndef GMQCC_IR_HDR
 #define GMQCC_IR_HDR
-
+#include "gmqcc.h"
 /* ir_value */
 
 typedef struct
@@ -44,6 +44,7 @@ typedef struct ir_value_s {
     int       outtype;
     /* 'const' vs 'var' qualifier */
     int       cvq;
+    uint32_t  flags;
 
     struct ir_instr_s **reads;
     struct ir_instr_s **writes;
@@ -171,6 +172,7 @@ typedef struct ir_block_s
     ir_value          **living;
 
     /* For the temp-allocation */
+    size_t entry_id;
     size_t eid;
     bool   is_return;
     size_t run_id;
@@ -275,6 +277,7 @@ typedef struct ir_function_s
 #define IR_FLAG_HAS_ARRAYS        (1<<1)
 #define IR_FLAG_HAS_UNINITIALIZED (1<<2)
 #define IR_FLAG_HAS_GOTO          (1<<3)
+#define IR_FLAG_INCLUDE_DEF       (1<<4)
 #define IR_FLAG_MASK_NO_OVERLAP (IR_FLAG_HAS_ARRAYS | IR_FLAG_HAS_UNINITIALIZED)
 
 ir_function* ir_function_new(struct ir_builder_s *owner, int returntype);
@@ -322,7 +325,9 @@ typedef struct ir_builder_s
     const char **filenames;
     qcint       *filestrings;
     /* we cache the #IMMEDIATE string here */
-    qcint str_immediate;
+    qcint        str_immediate;
+    /* there should just be this one nil */
+    ir_value    *nil;
 } ir_builder;
 
 ir_builder* ir_builder_new(const char *modulename);