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->left = left;
|
||||||
self->right = right;
|
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;
|
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);
|
v = ir_builder_create_global(ir, self->name, self->expression.vtype);
|
||||||
if (!v)
|
if (!v) {
|
||||||
|
printf("ir_builder_create_global failed\n");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (self->isconst) {
|
if (self->isconst) {
|
||||||
switch (self->expression.vtype)
|
switch (self->expression.vtype)
|
||||||
|
|
Loading…
Reference in a new issue