mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 02:31:28 +00:00
almost ISO C now, fixed all the MEM_VECTOR trailing semicolon issues.
This commit is contained in:
parent
75b78720fd
commit
b09d75518c
5 changed files with 29 additions and 26 deletions
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
|||
CC ?= clang
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wall -pedantic -std=c99
|
||||
OBJ = main.o \
|
||||
lex.o \
|
||||
error.o \
|
||||
|
|
2
asm.c
2
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);
|
||||
|
|
6
code.c
6
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++;
|
||||
|
|
21
gmqcc.h
21
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
|
||||
|
|
24
ir.h
24
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);
|
||||
|
|
Loading…
Reference in a new issue