mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-23 20:33:05 +00:00
ast_binary now keeps track of types
This commit is contained in:
parent
5240aa8379
commit
028543db8c
1 changed files with 15 additions and 1 deletions
16
ast.c
16
ast.c
|
@ -211,6 +211,18 @@ ast_binary* ast_binary_new(lex_ctx ctx, int op,
|
|||
self->left = left;
|
||||
self->right = right;
|
||||
|
||||
if (op >= INSTR_EQ_F && op <= INSTR_GT)
|
||||
self->expression.vtype = TYPE_FLOAT;
|
||||
else if (op == INSTR_AND || op == INSTR_OR ||
|
||||
op == INSTR_BITAND || op == INSTR_BITOR)
|
||||
self->expression.vtype = TYPE_FLOAT;
|
||||
else if (op == INSTR_MUL_VF || op == INSTR_MUL_FV)
|
||||
self->expression.vtype = TYPE_VECTOR;
|
||||
else if (op == INSTR_MUL_V)
|
||||
self->expression.vtype = TYPE_FLOAT;
|
||||
else
|
||||
self->expression.vtype = left->expression.vtype;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
@ -650,8 +662,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)
|
||||
|
|
Loading…
Reference in a new issue