]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
almost ISO C now, fixed all the MEM_VECTOR trailing semicolon issues.
authorDale Weiler <killfieldengine@gmail.com>
Sat, 28 Apr 2012 09:54:24 +0000 (05:54 -0400)
committerDale Weiler <killfieldengine@gmail.com>
Sat, 28 Apr 2012 09:54:24 +0000 (05:54 -0400)
Makefile
asm.c
code.c
gmqcc.h
ir.h

index 1a562b8961171bf51f0aff110fbba0790ab757c4..ae23ba4684aa3b726611b6bf920927d7dd3c250b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 CC     ?= clang
-CFLAGS += -Wall
+CFLAGS += -Wall -pedantic -std=c99
 OBJ     = main.o      \
           lex.o       \
           error.o     \
diff --git a/asm.c b/asm.c
index b1f48802658c14e319760d47221aef36c5764f0a..71a8fa37b91fa3f99b0c4c9896179c7395355b64 100644 (file)
--- a/asm.c
+++ b/asm.c
@@ -43,7 +43,7 @@ VECTOR_MAKE(globals, assembly_constants);
  */
 static char *const asm_getline(size_t *byte, FILE *fp) {
     char   *line = NULL;
-    ssize_t read = util_getline(&line, byte, fp);
+    size_t  read = util_getline(&line, byte, fp);
     *byte = read;
     if (read == -1) {
         mem_d (line);
diff --git a/code.c b/code.c
index 3f7ae5a041a5cafef0be6cb95719bb3b8721e09f..11fe91b645103ec747b78ea056d3ba92fac3543e 100644 (file)
--- a/code.c
+++ b/code.c
@@ -213,9 +213,9 @@ void code_write() {
                     code_statements_data[j].opcode != INSTR_RETURN)
                     util_debug("GEN", "        %s {0x%05d,0x%05d,0x%05d}\n",
                         asm_instr[code_statements_data[j].opcode].m,
-                        code_statements_data[j].s1,
-                        code_statements_data[j].s2,
-                        code_statements_data[j].s3
+                        code_statements_data[j].o1.s1,
+                        code_statements_data[j].o2.s2,
+                        code_statements_data[j].o3.s3
                     );
                 else break;
                 j++;
diff --git a/gmqcc.h b/gmqcc.h
index 764ac52cddae7a7fdc1c275bc667a4d9e730d7ed..d28452659c2398f762f92c2773067f2cb68b435f 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -228,6 +228,8 @@ uint32_t util_crc32(const char *, int, register const short);
 #endif
 
 /* Builds vector type (usefull for inside structures) */
+#define VECTOR_SNAP(X,Y) X ## Y
+#define VECTOR_FILL(X,Y) VECTOR_SNAP(X,Y)
 #define VECTOR_TYPE(T,N)                                        \
     T*     N##_data      = NULL;                                \
     long   N##_elements  = 0;                                   \
@@ -258,7 +260,8 @@ uint32_t util_crc32(const char *, int, register const short);
         elements--;                                             \
         while (N##_add(*++elements) != -1 && len--);            \
         return N##_elements;                                    \
-    }
+    }                                                           \
+    typedef char VECTOR_FILL(extra_semicolon_,__COUNTER__)
 /* Builds a full vector inspot */
 #define VECTOR_MAKE(T,N) \
     VECTOR_TYPE(T,N);    \
@@ -304,17 +307,17 @@ typedef struct {
     union {
         int16_t  s1; /* signed   */
         uint16_t u1; /* unsigned */
-    };
+    } o1;
     /* operand 2 */
     union {
         int16_t  s2; /* signed   */
         uint16_t u2; /* unsigned */
-    };
+    } o2;
     /* operand 3 */
     union {
         int16_t  s3; /* signed   */
         uint16_t u3; /* unsigned */
-    };
+    } o3;
     
     /*
      * This is the same as the structure in darkplaces
@@ -573,12 +576,12 @@ extern int  opts_compiler;
 //======================================================================
 #define MEM_VECTOR_PROTO(Towner, Tmem, mem)                   \
     bool GMQCC_WARN Towner##_##mem##_add(Towner*, Tmem);      \
-    bool GMQCC_WARN Towner##_##mem##_remove(Towner*, size_t);
+    bool GMQCC_WARN Towner##_##mem##_remove(Towner*, size_t)
 
 #define MEM_VECTOR_PROTO_ALL(Towner, Tmem, mem)                    \
-    MEM_VECTOR_PROTO(Towner, Tmem, mem)                            \
+    MEM_VECTOR_PROTO(Towner, Tmem, mem);                           \
     bool GMQCC_WARN Towner##_##mem##_find(Towner*, Tmem, size_t*); \
-    void Towner##_##mem##_clear(Towner*);
+    void Towner##_##mem##_clear(Towner*)
 
 #define MEM_VECTOR_MAKE(Twhat, name) \
     Twhat  *name;                    \
@@ -695,8 +698,8 @@ typedef struct {
  * A shallow copy of a lex_file to remember where which ast node
  * came from.
  */
-typedef struct lex_ctx {
+typedef struct {
     const char *file;
-    size_t     line;
+    size_t      line;
 } lex_ctx;
 #endif
diff --git a/ir.h b/ir.h
index 1a39c3dc42ab31b7e31f65d6306ef0be563dd775..060a9713f661e1153c5bd4d7514b8e24ae468de1 100644 (file)
--- a/ir.h
+++ b/ir.h
@@ -65,8 +65,8 @@ ir_value* ir_value_out(struct ir_function_s *owner, const char *name, int st, in
 void      ir_value_delete(ir_value*);
 void      ir_value_set_name(ir_value*, const char *name);
 
-MEM_VECTOR_PROTO_ALL(ir_value, struct ir_instr_s*, reads)
-MEM_VECTOR_PROTO_ALL(ir_value, struct ir_instr_s*, writes)
+MEM_VECTOR_PROTO_ALL(ir_value, struct ir_instr_s*, reads);
+MEM_VECTOR_PROTO_ALL(ir_value, struct ir_instr_s*, writes);
 
 bool GMQCC_WARN ir_value_set_float(ir_value*, float f);
 #if 0
@@ -77,7 +77,7 @@ bool GMQCC_WARN ir_value_set_vector(ir_value*, vector v);
 /*bool   ir_value_set_pointer_v(ir_value*, ir_value* p); */
 /*bool   ir_value_set_pointer_i(ir_value*, int i);       */
 
-MEM_VECTOR_PROTO(ir_value, ir_life_entry_t, life)
+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);
@@ -112,7 +112,7 @@ typedef struct ir_instr_s
 ir_instr* ir_instr_new(struct ir_block_s *owner, int opcode);
 void      ir_instr_delete(ir_instr*);
 
-MEM_VECTOR_PROTO(ir_value, ir_phi_entry_t, phi)
+MEM_VECTOR_PROTO(ir_value, ir_phi_entry_t, phi);
 bool GMQCC_WARN ir_instr_op(ir_instr*, int op, ir_value *value, bool writing);
 
 void ir_instr_dump(ir_instr* in, char *ind, int (*oprintf)(const char*,...));
@@ -142,9 +142,9 @@ void      ir_block_delete(ir_block*);
 
 bool      ir_block_set_label(ir_block*, const char *label);
 
-MEM_VECTOR_PROTO(ir_block, ir_instr*, instr)
-MEM_VECTOR_PROTO_ALL(ir_block, ir_block*, exits)
-MEM_VECTOR_PROTO_ALL(ir_block, ir_block*, entries)
+MEM_VECTOR_PROTO(ir_block, ir_instr*, instr);
+MEM_VECTOR_PROTO_ALL(ir_block, ir_block*, exits);
+MEM_VECTOR_PROTO_ALL(ir_block, ir_block*, entries);
 
 ir_value* ir_block_create_binop(ir_block*, const char *label, int op,
                                 ir_value *left, ir_value *right);
@@ -172,7 +172,7 @@ bool GMQCC_WARN ir_block_create_if(ir_block*, ir_value *cond,
 bool GMQCC_WARN ir_block_create_jump(ir_block*, ir_block *to);
 bool GMQCC_WARN ir_block_create_goto(ir_block*, ir_block *to);
 
-MEM_VECTOR_PROTO_ALL(ir_block, ir_value*, living)
+MEM_VECTOR_PROTO_ALL(ir_block, ir_value*, living);
 
 void ir_block_dump(ir_block*, char *ind, int (*oprintf)(const char*,...));
 
@@ -211,8 +211,8 @@ void         ir_function_delete(ir_function*);
 bool GMQCC_WARN ir_function_collect_value(ir_function*, ir_value *value);
 
 bool ir_function_set_name(ir_function*, const char *name);
-MEM_VECTOR_PROTO(ir_function, int, params)
-MEM_VECTOR_PROTO(ir_function, ir_block*, blocks)
+MEM_VECTOR_PROTO(ir_function, int, params);
+MEM_VECTOR_PROTO(ir_function, ir_block*, blocks);
 
 ir_value* ir_function_get_local(ir_function *self, const char *name);
 ir_value* ir_function_create_local(ir_function *self, const char *name, int vtype);
@@ -241,8 +241,8 @@ void        ir_builder_delete(ir_builder*);
 
 bool ir_builder_set_name(ir_builder *self, const char *name);
 
-MEM_VECTOR_PROTO(ir_builder, ir_function*, functions)
-MEM_VECTOR_PROTO(ir_builder, ir_value*, globals)
+MEM_VECTOR_PROTO(ir_builder, ir_function*, functions);
+MEM_VECTOR_PROTO(ir_builder, ir_value*, globals);
 
 ir_function* ir_builder_get_function(ir_builder*, const char *fun);
 ir_function* ir_builder_create_function(ir_builder*, const char *name);