return NULL;
}
- fn->value->isconst = true;
+ fn->value->hasvalue = true;
fn->value->outtype = outtype;
fn->value->constval.vfunc = fn;
fn->value->context = fn->context;
{
++optimization_count[OPTIM_MINOR];
call->_ops[0] = store->_ops[0];
- vec_remove(block, vec_size(block->instr) - 2, 1);
+ vec_remove(block->instr, vec_size(block->instr) - 2, 1);
ir_instr_delete(store);
}
else
self->reads = NULL;
self->writes = NULL;
- self->isconst = false;
+ self->cvq = CV_NONE;
+ self->hasvalue = false;
self->context.file = "<@no context>";
self->context.line = 0;
self->name = NULL;
size_t i;
if (self->name)
mem_d((void*)self->name);
- if (self->isconst)
+ if (self->hasvalue)
{
if (self->vtype == TYPE_STRING)
mem_d((void*)self->constval.vstring);
if (self->vtype != TYPE_FLOAT)
return false;
self->constval.vfloat = f;
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
if (self->vtype != TYPE_FUNCTION)
return false;
self->constval.vint = f;
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
if (self->vtype != TYPE_VECTOR)
return false;
self->constval.vvec = v;
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
if (self->vtype != TYPE_FIELD)
return false;
self->constval.vpointer = fld;
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
if (self->vtype != TYPE_STRING)
return false;
self->constval.vstring = ir_strdup(str);
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
if (self->vtype != TYPE_INTEGER)
return false;
self->constval.vint = i;
- self->isconst = true;
+ self->hasvalue = true;
return true;
}
#endif
static bool gen_global_field(ir_value *global)
{
- if (global->isconst)
+ if (global->hasvalue)
{
ir_value *fld = global->constval.vpointer;
if (!fld) {
static bool gen_global_pointer(ir_value *global)
{
- if (global->isconst)
+ if (global->hasvalue)
{
ir_value *target = global->constval.vpointer;
if (!target) {
size_t i;
size_t local_var_end;
- if (!global->isconst || (!global->constval.vfunc))
+ if (!global->hasvalue || (!global->constval.vfunc))
{
irerror(global->context, "Invalid state of function-global: not constant: %s", global->name);
return false;
case TYPE_FLOAT:
{
ir_value_code_setaddr(global, vec_size(code_globals));
- if (global->isconst) {
+ if (global->hasvalue) {
iptr = (int32_t*)&global->constval.ivec[0];
vec_push(code_globals, *iptr);
} else {
case TYPE_STRING:
{
ir_value_code_setaddr(global, vec_size(code_globals));
- if (global->isconst) {
+ if (global->hasvalue) {
vec_push(code_globals, code_genstring(global->constval.vstring));
} else {
vec_push(code_globals, 0);
{
size_t d;
ir_value_code_setaddr(global, vec_size(code_globals));
- if (global->isconst) {
+ if (global->hasvalue) {
iptr = (int32_t*)&global->constval.ivec[0];
vec_push(code_globals, iptr[0]);
if (global->code.globaladdr < 0)
}
case TYPE_FUNCTION:
ir_value_code_setaddr(global, vec_size(code_globals));
- if (!global->isconst) {
+ if (!global->hasvalue) {
vec_push(code_globals, 0);
if (global->code.globaladdr < 0)
return false;
for (i = 0; i < vec_size(b->globals); ++i)
{
oprintf("global ");
- if (b->globals[i]->isconst)
+ if (b->globals[i]->hasvalue)
oprintf("%s = ", b->globals[i]->name);
ir_value_dump(b->globals[i], oprintf);
oprintf("\n");
void ir_value_dump(ir_value* v, int (*oprintf)(const char*, ...))
{
- if (v->isconst) {
+ if (v->hasvalue) {
switch (v->vtype) {
default:
case TYPE_VOID: