[qfcc] Make the symbol union anonymous

And now that little s. goes away. Yay, one bit less noise when reading
code.
This commit is contained in:
Bill Currie 2024-08-16 16:48:11 +09:00
parent 6bd26a0f61
commit ce8c72c323
24 changed files with 245 additions and 247 deletions

View file

@ -83,7 +83,7 @@ typedef struct symbol_s {
struct function_s *func; ///< sy_func
symconv_t convert; ///< sy_convert
struct rua_macro_s *macro; ///< sy_macro
} s;
};
} symbol_t;
typedef enum {

View file

@ -645,7 +645,7 @@ algebra_symbol (const char *name, symtab_t *symtab)
if (blade_val) {
sym = new_symbol_type (name, blade_val->type);
sym->sy_type = sy_const;
sym->s.value = blade_val;
sym->value = blade_val;
symtab_addsymbol (symtab, sym);
}
return sym;

View file

@ -393,7 +393,7 @@ emit_static_instances_list (void)
if (!instance_lists_sym->table) {
symtab_addsymbol (pr.symtab, instance_lists_sym);
}
instance_lists_def = instance_lists_sym->s.def;
instance_lists_def = instance_lists_sym->def;
instance_lists_def->initialized = instance_lists_def->constant = 1;
instance_lists_def->nosave = 1;
@ -696,7 +696,7 @@ _get_class (symbol_t *sym, int create)
}
sym = class_symbol (&c->class_type, 1);
c->def = sym->s.def;
c->def = sym->def;
return c;
}
@ -793,7 +793,7 @@ begin_category (category_t *category)
current_class = &category->class_type;
sym = class_symbol (current_class, 0);
category->def = def = sym->s.def;
category->def = def = sym->def;
def->initialized = def->constant = def->nosave = 1;
space = def->space;
@ -855,7 +855,7 @@ emit_ivar_list_item (def_t *def, void *data, int index)
EMIT_STRING (space, ivar->ivar_name, ivar_sym->name);
encode_type (ivar_data->encoding, ivar_sym->type);
EMIT_STRING (space, ivar->ivar_type, ivar_data->encoding->str);
ivar->ivar_offset = ivar_sym->s.offset;
ivar->ivar_offset = ivar_sym->offset;
}
static def_t *
@ -898,7 +898,7 @@ begin_class (class_t *class)
sym = make_symbol (va (0, "_OBJ_METACLASS_%s", class->name),
&type_class, pr.far_data, sc_static);
meta_def = sym->s.def;
meta_def = sym->def;
meta_def->initialized = meta_def->constant = meta_def->nosave = 1;
space = meta_def->space;
meta = &D_STRUCT (pr_class_t, meta_def);
@ -919,7 +919,7 @@ begin_class (class_t *class)
}
current_class = &class->class_type;
sym = class_symbol (current_class, 0);
class->def = def = sym->s.def;
class->def = def = sym->def;
def->initialized = def->constant = def->nosave = 1;
space = def->space;
@ -969,7 +969,7 @@ emit_class_ref (const char *class_name)
&type_ptr, pr.far_data, sc_static);
if (!ref_sym->table)
symtab_addsymbol (pr.symtab, ref_sym);
ref_def = ref_sym->s.def;
ref_def = ref_sym->def;
if (ref_def->initialized)
return;
ref_def->initialized = ref_def->constant = ref_def->nosave = 1;
@ -977,7 +977,7 @@ emit_class_ref (const char *class_name)
&type_ptr, pr.far_data, sc_extern);
if (!name_sym->table)
symtab_addsymbol (pr.symtab, name_sym);
name_def = name_sym->s.def;
name_def = name_sym->def;
if (!name_def->external)
D_INT (ref_def) = name_def->offset;
reloc_def_def (name_def, ref_def);
@ -993,7 +993,7 @@ emit_class_name (const char *class_name)
&type_ptr, pr.far_data, sc_global);
if (!name_sym->table)
symtab_addsymbol (pr.symtab, name_sym);
name_def = name_sym->s.def;
name_def = name_sym->def;
if (name_def->initialized)
return;
name_def->initialized = name_def->constant = 1;
@ -1014,7 +1014,7 @@ emit_category_ref (const char *class_name, const char *category_name)
&type_ptr, pr.far_data, sc_static);
if (!ref_sym->table)
symtab_addsymbol (pr.symtab, ref_sym);
ref_def = ref_sym->s.def;
ref_def = ref_sym->def;
if (ref_def->initialized)
return;
ref_def->initialized = ref_def->constant = 1;
@ -1024,7 +1024,7 @@ emit_category_ref (const char *class_name, const char *category_name)
&type_ptr, pr.far_data, sc_extern);
if (!name_sym->table)
symtab_addsymbol (pr.symtab, name_sym);
name_def = name_sym->s.def;
name_def = name_sym->def;
if (!name_def->external)
D_INT (ref_def) = name_def->offset;
reloc_def_def (name_def, ref_def);
@ -1041,7 +1041,7 @@ emit_category_name (const char *class_name, const char *category_name)
&type_ptr, pr.far_data, sc_global);
if (!name_sym->table)
symtab_addsymbol (pr.symtab, name_sym);
name_def = name_sym->s.def;
name_def = name_sym->def;
if (name_def->initialized)
return;
name_def->initialized = name_def->constant = 1;
@ -1342,7 +1342,7 @@ class_add_ivars (class_t *class, symtab_t *ivars)
if (class->super_class)
base = type_size (class->super_class->type);
for (sym = ivars->symbols; sym; sym = sym->next)
sym->s.offset += base;
sym->offset += base;
class->ivars = ivars;
}
@ -1471,13 +1471,13 @@ class_pointer_symbol (class_t *class)
&type_Class, pr.near_data, sc_static);
if (!sym->table)
symtab_addsymbol (pr.symtab, sym);
def = sym->s.def;
def = sym->def;
if (def->initialized)
return sym;
def->initialized = def->constant = 1;
def->nosave = 1;
if (!class->def)
class->def = class_symbol (&class_type, 1)->s.def;
class->def = class_symbol (&class_type, 1)->def;
if (!class->def->external)
D_INT (def) = class->def->offset;
reloc_def_def (class->def, def);
@ -1625,11 +1625,10 @@ class_finish_module (void)
module_sym = make_symbol ("_OBJ_MODULE", &type_module, pr.far_data,
sc_static);
symtab_addsymbol (current_symtab, module_sym);
module = &D_STRUCT (pr_module_t, module_sym->s.def);
module = &D_STRUCT (pr_module_t, module_sym->def);
module->size = type_size (&type_module);
EMIT_STRING (module_sym->s.def->space, module->name,
GETSTR (pr.loc.file));
EMIT_DEF (module_sym->s.def->space, module->symtab, symtab_def);
EMIT_STRING (module_sym->def->space, module->name, GETSTR (pr.loc.file));
EMIT_DEF (module_sym->def->space, module->symtab, symtab_def);
exec_class_sym = symtab_lookup (pr.symtab, "__obj_exec_class");
if (!exec_class_sym) {
@ -1810,7 +1809,7 @@ emit_protocol (protocol_t *protocol)
defspace_t *space;
proto_def = make_symbol (va (0, "_OBJ_PROTOCOL_%s", protocol->name),
&type_protocol, pr.far_data, sc_static)->s.def;
&type_protocol, pr.far_data, sc_static)->def;
if (proto_def->initialized)
return proto_def;
proto_def->initialized = proto_def->constant = 1;
@ -1967,8 +1966,8 @@ class_finish_ivar_scope (class_type_t *class_type, symtab_t *ivar_scope,
if (sym->sy_type != sy_var)
continue;
sym->sy_type = sy_convert;
sym->s.convert.conv = class_dereference_ivar;
sym->s.convert.data = (void *) self_expr;
sym->convert.conv = class_dereference_ivar;
sym->convert.data = (void *) self_expr;
}
}

View file

@ -399,7 +399,7 @@ make_magic_macro (symtab_t *tab, const char *name, rua_macro_f update)
}
sym = new_symbol (macro->name);
sym->sy_type = sy_macro;
sym->s.macro = macro;
sym->macro = macro;
symtab_addsymbol (tab, sym);
return macro;
}

View file

@ -455,14 +455,14 @@ init_vector_components (symbol_t *vector_sym, int is_field, symtab_t *symtab)
error (0, "%s redefined", name);
sym = 0;
} else {
expr = sym->s.expr;
expr = sym->expr;
if (is_field) {
if (expr->type != ex_value
|| expr->value->lltype != ev_field) {
error (0, "%s redefined", name);
sym = 0;
} else {
expr->value->v.pointer.def = vector_sym->s.def;
expr->value->v.pointer.def = vector_sym->def;
expr->value->v.pointer.val = i;
}
}
@ -475,14 +475,14 @@ init_vector_components (symbol_t *vector_sym, int is_field, symtab_t *symtab)
sym = new_symbol (name);
if (!expr) {
if (is_field) {
expr = new_field_expr (i, &type_float, vector_sym->s.def);
expr = new_field_expr (i, &type_float, vector_sym->def);
} else {
expr = field_expr (vector_expr,
new_symbol_expr (new_symbol (fields[i])));
}
}
sym->sy_type = sy_expr;
sym->s.expr = expr;
sym->expr = expr;
if (!sym->table)
symtab_addsymbol (symtab, sym);
}
@ -501,18 +501,18 @@ init_field_def (def_t *def, const expr_t *init, storage_class_t storage,
field_sym = symtab_lookup (pr.entity_fields, def->name);
if (!field_sym)
field_sym = new_symbol_type (def->name, type);
if (field_sym->s.def && field_sym->s.def->external) {
if (field_sym->def && field_sym->def->external) {
//FIXME this really is not the right way
relocs = field_sym->s.def->relocs;
free_def (field_sym->s.def);
field_sym->s.def = 0;
relocs = field_sym->def->relocs;
free_def (field_sym->def);
field_sym->def = 0;
}
if (!field_sym->s.def) {
field_sym->s.def = new_def (def->name, type, pr.entity_data, storage);
reloc_attach_relocs (relocs, &field_sym->s.def->relocs);
field_sym->s.def->nosave = 1;
if (!field_sym->def) {
field_sym->def = new_def (def->name, type, pr.entity_data, storage);
reloc_attach_relocs (relocs, &field_sym->def->relocs);
field_sym->def->nosave = 1;
}
field_def = field_sym->s.def;
field_def = field_sym->def;
if (!field_sym->table)
symtab_addsymbol (pr.entity_fields, field_sym);
if (storage != sc_extern) {
@ -529,7 +529,7 @@ init_field_def (def_t *def, const expr_t *init, storage_class_t storage,
symbol_t *field = symtab_lookup (pr.entity_fields, sym->name);
if (field) {
scoped_src_loc (init);
auto new = new_field_expr (0, field->type, field->s.def);
auto new = new_field_expr (0, field->type, field->def);
if (new->type != ex_value) {
internal_error (init, "expected value expression");
}
@ -565,14 +565,14 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
error (0, "%s redefined", sym->name);
} else {
// is var and same type
if (!check->s.def)
if (!check->def)
internal_error (0, "half defined var");
if (storage == sc_extern) {
if (init)
error (0, "initializing external variable");
return;
}
if (init && check->s.def->initialized) {
if (init && check->def->initialized) {
error (0, "%s redefined", sym->name);
return;
}
@ -583,13 +583,13 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
if (!sym->table)
symtab_addsymbol (symtab, sym);
if (sym->s.def && sym->s.def->external) {
if (sym->def && sym->def->external) {
//FIXME this really is not the right way
relocs = sym->s.def->relocs;
free_def (sym->s.def);
sym->s.def = 0;
relocs = sym->def->relocs;
free_def (sym->def);
sym->def = 0;
}
if (!sym->s.def) {
if (!sym->def) {
if (is_array (sym->type) && !type_size (sym->type)
&& init && init->type == ex_compound) {
auto ele_type = dereference_type (sym->type);
@ -605,14 +605,14 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
sym->type = type_default;
}
}
sym->s.def = new_def (sym->name, sym->type, space, storage);
reloc_attach_relocs (relocs, &sym->s.def->relocs);
sym->def = new_def (sym->name, sym->type, space, storage);
reloc_attach_relocs (relocs, &sym->def->relocs);
}
if (is_vector(sym->type) && options.code.vector_components)
init_vector_components (sym, 0, symtab);
if (sym->type->type == ev_field && storage != sc_local
&& storage != sc_param)
init = init_field_def (sym->s.def, init, storage, symtab);
init = init_field_def (sym->def, init, storage, symtab);
if (storage == sc_extern) {
if (init)
error (0, "initializing external variable");
@ -625,8 +625,8 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
return;
if ((is_structural (sym->type) || is_nonscalar (sym->type))
&& (init->type == ex_compound || init->type == ex_nil)) {
init_elements (sym->s.def, init);
sym->s.def->initialized = 1;
init_elements (sym->def, init);
sym->def->initialized = 1;
} else {
if (init->type == ex_nil) {
init = convert_nil (init, sym->type);
@ -638,7 +638,7 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
return;
}
if (storage == sc_local && local_expr) {
sym->s.def->initialized = 1;
sym->def->initialized = 1;
init = assign_expr (new_symbol_expr (sym), init);
// fold_constants takes care of int/float conversions
append_expr (local_expr, fold_constants (init));
@ -657,9 +657,9 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
if (init->value->lltype == ev_ptr
|| init->value->lltype == ev_field) {
// FIXME offset pointers
D_INT (sym->s.def) = init->value->v.pointer.val;
D_INT (sym->def) = init->value->v.pointer.val;
if (init->value->v.pointer.def)
reloc_def_field (init->value->v.pointer.def, sym->s.def);
reloc_def_field (init->value->v.pointer.def, sym->def);
} else {
ex_value_t *v = init->value;
if (!init->implicit
@ -671,21 +671,21 @@ initialize_def (symbol_t *sym, const expr_t *init, defspace_t *space,
if (!type_same (sym->type, init_type))
v = convert_value (v, sym->type);
if (v->lltype == ev_string) {
EMIT_STRING (sym->s.def->space, D_STRING (sym->s.def),
EMIT_STRING (sym->def->space, D_STRING (sym->def),
v->v.string_val);
} else {
memcpy (D_POINTER (pr_type_t, sym->s.def), &v->v,
memcpy (D_POINTER (pr_type_t, sym->def), &v->v,
type_size (sym->type) * sizeof (pr_type_t));
}
}
sym->s.def->initialized = 1;
sym->def->initialized = 1;
if (options.code.const_initializers) {
sym->s.def->constant = 1;
sym->s.def->nosave = 1;
sym->def->constant = 1;
sym->def->nosave = 1;
}
}
}
sym->s.def->initializer = init;
sym->def->initializer = init;
}
static int

View file

@ -169,12 +169,12 @@ print_struct (dstring_t *dstr, const type_t *t, int level, int id)
int val;
const char *port = "";
if (sym->sy_type == sy_const) {
val = sym->s.value->v.int_val;
val = sym->value->v.int_val;
} else {
if (sym->sy_type != sy_var) {
continue;
}
val = sym->s.offset;
val = sym->offset;
port = va (0, " port=\"f%d\"", pnum++);
}
dasprintf (dstr, "%*s<tr><td>%s</td><td%s>%d</td></tr>\n",

View file

@ -106,10 +106,10 @@ convert_name (const expr_t *e)
return e;
}
if (sym->sy_type == sy_convert) {
return sym->s.convert.conv (sym, sym->s.convert.data);
return sym->convert.conv (sym, sym->convert.data);
}
if (sym->sy_type == sy_expr) {
return sym->s.expr;
return sym->expr;
}
if (sym->sy_type == sy_type)
internal_error (e, "unexpected typedef");
@ -488,16 +488,16 @@ named_label_expr (symbol_t *label)
sym = symtab_lookup (current_func->label_scope, label->name);
if (sym) {
return sym->s.expr;
return sym->expr;
}
l = new_label_expr ();
l->label.name = save_string (va (0, "%s_%s", l->label.name,
label->name));
l->label.symbol = label;
label->sy_type = sy_expr;
label->s.expr = l;
label->expr = l;
symtab_addsymbol (current_func->label_scope, label);
return label->s.expr;
return label->expr;
}
expr_t *
@ -876,7 +876,7 @@ is_constant (const expr_t *e)
if (e->type == ex_nil || e->type == ex_value || e->type == ex_labelref
|| (e->type == ex_symbol && e->symbol->sy_type == sy_const)
|| (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant))
&& e->symbol->def->constant))
return 1;
return 0;
}
@ -915,13 +915,13 @@ constant_expr (const expr_t *e)
return e;
sym = e->symbol;
if (sym->sy_type == sy_const) {
value = sym->s.value;
} else if (sym->sy_type == sy_var && sym->s.def->constant) {
value = sym->value;
} else if (sym->sy_type == sy_var && sym->def->constant) {
//FIXME pointers and fields
internal_error (e, "what to do here?");
//memset (&value, 0, sizeof (value));
//memcpy (&value.v, &D_INT (sym->s.def),
//type_size (sym->s.def->type) * sizeof (pr_type_t));
//memcpy (&value.v, &D_INT (sym->def),
//type_size (sym->def->type) * sizeof (pr_type_t));
} else {
return e;
}
@ -980,11 +980,11 @@ expr_double (const expr_t *e)
return e->value->v.double_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_double)
return e->symbol->s.value->v.double_val;
return e->symbol->value->v.double_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& is_double (e->symbol->s.def->type))
return D_DOUBLE (e->symbol->s.def);
&& e->symbol->def->constant
&& is_double (e->symbol->def->type))
return D_DOUBLE (e->symbol->def);
internal_error (e, "not a double constant");
}
@ -997,11 +997,11 @@ expr_float (const expr_t *e)
return e->value->v.float_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_float)
return e->symbol->s.value->v.float_val;
return e->symbol->value->v.float_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& is_float (e->symbol->s.def->type))
return D_FLOAT (e->symbol->s.def);
&& e->symbol->def->constant
&& is_float (e->symbol->def->type))
return D_FLOAT (e->symbol->def);
internal_error (e, "not a float constant");
}
@ -1027,11 +1027,11 @@ expr_vector (const expr_t *e)
return e->value->v.vector_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_vector)
return e->symbol->s.value->v.vector_val;
return e->symbol->value->v.vector_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& e->symbol->s.def->type->type == ev_vector)
return D_VECTOR (e->symbol->s.def);
&& e->symbol->def->constant
&& e->symbol->def->type->type == ev_vector)
return D_VECTOR (e->symbol->def);
internal_error (e, "not a vector constant");
}
@ -1057,11 +1057,11 @@ expr_quaternion (const expr_t *e)
return e->value->v.quaternion_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_quaternion)
return e->symbol->s.value->v.quaternion_val;
return e->symbol->value->v.quaternion_val;
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& e->symbol->s.def->type->type == ev_quaternion)
return D_QUAT (e->symbol->s.def);
&& e->symbol->def->constant
&& e->symbol->def->type->type == ev_quaternion)
return D_QUAT (e->symbol->def);
internal_error (e, "not a quaternion constant");
}
@ -1100,12 +1100,12 @@ expr_int (const expr_t *e)
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& (e->symbol->type->type == ev_int
|| is_enum (e->symbol->type))) {
return e->symbol->s.value->v.int_val;
return e->symbol->value->v.int_val;
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& is_integral (e->symbol->s.def->type)) {
return D_INT (e->symbol->s.def);
&& e->symbol->def->constant
&& is_integral (e->symbol->def->type)) {
return D_INT (e->symbol->def);
}
if (e->type == ex_def && e->def->constant
&& is_integral (e->def->type)) {
@ -1145,12 +1145,12 @@ expr_uint (const expr_t *e)
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_uint) {
return e->symbol->s.value->v.uint_val;
return e->symbol->value->v.uint_val;
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_var
&& e->symbol->s.def->constant
&& is_integral (e->symbol->s.def->type)) {
return D_INT (e->symbol->s.def);
&& e->symbol->def->constant
&& is_integral (e->symbol->def->type)) {
return D_INT (e->symbol->def);
}
if (e->type == ex_def && e->def->constant
&& is_integral (e->def->type)) {
@ -1186,7 +1186,7 @@ expr_short (const expr_t *e)
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_short) {
return e->symbol->s.value->v.short_val;
return e->symbol->value->v.short_val;
}
internal_error (e, "not a short constant");
}
@ -1202,7 +1202,7 @@ expr_ushort (const expr_t *e)
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& e->symbol->type->type == ev_ushort) {
return e->symbol->s.value->v.ushort_val;
return e->symbol->value->v.ushort_val;
}
internal_error (e, "not a ushort constant");
}
@ -1260,7 +1260,7 @@ is_math_val (const expr_t *e)
return 1;
}
if (e->type == ex_symbol && e->symbol->sy_type == sy_const
&& is_math (e->symbol->s.value->type)) {
&& is_math (e->symbol->value->type)) {
return 1;
}
return 0;
@ -1516,7 +1516,7 @@ field_expr (const expr_t *e1, const expr_t *e2)
if (e2->type == ex_symbol)
field = get_struct_field (&type_entity, e1, e2);
if (field) {
e2 = new_field_expr (0, field->type, field->s.def);
e2 = new_field_expr (0, field->type, field->def);
e = new_binary_expr ('.', e1, e2);
e->expr.type = field->type;
return e;
@ -1539,7 +1539,7 @@ field_expr (const expr_t *e1, const expr_t *e2)
if (!field)
return e1;
const expr_t *offset = new_short_expr (field->s.offset);
const expr_t *offset = new_short_expr (field->offset);
e1 = offset_pointer_expr (e1, offset);
if (e1->type == ex_error) {
return e1;
@ -1555,7 +1555,7 @@ field_expr (const expr_t *e1, const expr_t *e2)
ivar = class_find_ivar (class, protected, sym->name);
if (!ivar)
return new_error_expr ();
const expr_t *offset = new_short_expr (ivar->s.offset);
const expr_t *offset = new_short_expr (ivar->offset);
e1 = offset_pointer_expr (e1, offset);
e1 = cast_expr (pointer_type (ivar->type), e1);
if (e1->type == ex_error) {
@ -1590,25 +1590,25 @@ field_expr (const expr_t *e1, const expr_t *e2)
internal_error (e2, "failed to find entity field %s",
e2->symbol->name);
}
def = sym->s.def;
def = sym->def;
e2 = new_field_expr (0, field->type, def);
} else if (e2->type != ex_value
|| e2->value->lltype != ev_field) {
internal_error (e2, "unexpected field exression");
}
auto fv = new_field_val (e2->value->v.pointer.val + field->s.offset, field->type, e2->value->v.pointer.def);
auto fv = new_field_val (e2->value->v.pointer.val + field->offset, field->type, e2->value->v.pointer.def);
scoped_src_loc (e2);
e2 = new_value_expr (fv, false);
// create a new . expression
return field_expr (e1, e2);
} else {
if (e1->type == ex_uexpr && e1->expr.op == '.') {
const expr_t *offset = new_short_expr (field->s.offset);
const expr_t *offset = new_short_expr (field->offset);
e1 = offset_pointer_expr (e1->expr.e1, offset);
e1 = cast_expr (pointer_type (field->type), e1);
return unary_expr ('.', e1);
} else {
return new_offset_alias_expr (field->type, e1, field->s.offset);
return new_offset_alias_expr (field->type, e1, field->offset);
}
}
} else if (is_class (t1)) {
@ -2782,7 +2782,7 @@ address_expr (const expr_t *e1, const type_t *t)
break;
case ex_symbol:
if (e1->symbol->sy_type == sy_var) {
auto def = e1->symbol->s.def;
auto def = e1->symbol->def;
auto type = def->type;
//FIXME this test should be in statements.c

View file

@ -324,7 +324,7 @@ mvec_expr (const expr_t *expr, algebra_t *algebra)
int count = 0;
for (auto sym = get_mvec_sym (mvtype); sym; sym = sym->next) {
auto c = &components[count++];
*c = new_offset_alias_expr (sym->type, expr, sym->s.offset);
*c = new_offset_alias_expr (sym->type, expr, sym->offset);
*c = edag_add_expr (*c);
}
list_gather (&mvec->multivec.components, components, count);
@ -2990,18 +2990,18 @@ algebra_assign_expr (const expr_t *dst, const expr_t *src)
while (sym->type != get_type (c[i])) {
sym = sym->next;
}
int size = sym->s.offset - memset_base;
int size = sym->offset - memset_base;
if (size) {
zero_components (block, dst, memset_base, size);
}
auto dst_alias = new_offset_alias_expr (sym->type, dst, sym->s.offset);
auto dst_alias = new_offset_alias_expr (sym->type, dst, sym->offset);
if (summed_extend (c[i])) {
assign_extend (block, dst_alias, c[i]);
} else {
append_expr (block,
edag_add_expr (new_assign_expr (dst_alias, c[i])));
}
memset_base = sym->s.offset + type_size (sym->type);
memset_base = sym->offset + type_size (sym->type);
}
if (type_size (dstType) - memset_base) {
zero_components (block, dst, memset_base,

View file

@ -158,7 +158,7 @@ get_designated_offset (const type_t *type, const designator_t *des)
if (is_struct (type) || is_union (type)) {
field = designator_field (des, type);
offset = field->s.offset;
offset = field->offset;
ele_type = field->type;
} else if (is_array (type)) {
int array_size = type->t.array.size;
@ -168,7 +168,7 @@ get_designated_offset (const type_t *type, const designator_t *des)
ele_type = ev_types[type->type];
if (type->t.symtab && des->field) {
field = designator_field (des, type);
offset = field->s.offset;
offset = field->offset;
} else {
int vec_width = type_width (type);
offset = designator_index (des, type_size (ele_type), vec_width);
@ -227,7 +227,7 @@ build_element_chain (element_chain_t *element_chain, const type_t *type,
}
if (state.field) {
state.type = state.field->type;
state.offset = state.field->s.offset;
state.offset = state.field->offset;
}
} else if (is_array (type)) {
state.type = dereference_type (type);
@ -269,7 +269,7 @@ build_element_chain (element_chain_t *element_chain, const type_t *type,
}
if (state.field) {
state.type = state.field->type;
state.offset = state.field->s.offset;
state.offset = state.field->offset;
}
}

View file

@ -109,7 +109,7 @@ selector_expr (keywordarg_t *selector)
pr.far_data, sc_extern);
if (!sel_table->table)
symtab_addsymbol (pr.symtab, sel_table);
reloc_def_def (sel_table->s.def, sel_sym->s.def);
reloc_def_def (sel_table->def, sel_sym->def);
}
sel_ref = new_symbol_expr (sel_sym);
sel_ref = new_address_expr (&type_selector, sel_ref,

View file

@ -72,7 +72,7 @@ check_int (const expr_t *arg)
&& arg->type != ex_type) {
return false;
}
int op = arg->symbol->s.expr->typ.op;
int op = arg->symbol->expr->typ.op;
if (op != QC_AT_WIDTH && op != QC_AT_ROWS && op != QC_AT_COLS) {
return false;
}
@ -500,7 +500,7 @@ type_parameter (symbol_t *sym, const expr_t *type)
sym = new_symbol (sym->name);
}
sym->sy_type = sy_type_param;
sym->s.expr = type;
sym->expr = type;
return sym;
}

View file

@ -653,7 +653,7 @@ flow_build_vars (function_t *func)
}
// count .return and .param_[0-7] as they are always needed
for (i = 0; i < num_flow_params; i++) {
def_t *def = param_symbol (flow_params[i].name)->s.def;
def_t *def = param_symbol (flow_params[i].name)->def;
def_visit_all (def, 0, flow_def_clear_flowvars, 0);
flow_params[i].op.def = def;
num_vars += count_operand (&flow_params[i].op);

View file

@ -230,8 +230,8 @@ make_gentype (const expr_t *expr)
auto sym = expr->symbol;
gentype_t gentype = {
.name = save_string (sym->name),
.compute = check_compute_type (sym->s.expr),
.valid_types = valid_type_list (sym->s.expr),
.compute = check_compute_type (sym->expr),
.valid_types = valid_type_list (sym->expr),
};
if (gentype.compute && gentype.valid_types) {
internal_error (expr, "both computed type and type list");
@ -582,7 +582,7 @@ function_symbol (symbol_t *sym, specifier_t spec)
s->sy_type = sy_func;
s->type = unalias_type (sym->type);
s->params = sym->params;
s->s.func = 0; // function not yet defined
s->func = 0; // function not yet defined
symtab_addsymbol (current_symtab, s);
}
return s;
@ -758,7 +758,7 @@ find_generic_function (const expr_t *fexpr, genfunc_t **genfuncs,
sym->sy_type = sy_func;
sym->type = type;
sym->params = params;
sym->s.func = nullptr;
sym->func = nullptr;
symtab_addsymbol (fsym->table, sym);
}
return new_symbol_expr (sym);
@ -931,10 +931,10 @@ build_v6p_scope (symbol_t *fsym)
param_t *p;
symbol_t *args = 0;
symbol_t *param;
symtab_t *parameters = fsym->s.func->parameters;
symtab_t *locals = fsym->s.func->locals;
symtab_t *parameters = fsym->func->parameters;
symtab_t *locals = fsym->func->locals;
if (fsym->s.func->type->t.func.num_params < 0) {
if (fsym->func->type->t.func.num_params < 0) {
args = new_symbol_type (".args", &type_va_list);
initialize_def (args, 0, parameters->space, sc_param, locals);
}
@ -974,7 +974,7 @@ create_param (symtab_t *parameters, symbol_t *param)
}
def->offset = defspace_alloc_aligned_highwater (space, size, alignment);
def->type = param->type;
param->s.def = def;
param->def = def;
param->sy_type = sy_var;
symtab_addsymbol (parameters, param);
if (is_vector(param->type) && options.code.vector_components)
@ -999,8 +999,8 @@ build_rua_scope (symbol_t *fsym)
}
param = new_symbol_type (p->name, p->type);
}
create_param (fsym->s.func->parameters, param);
param->s.def->reg = fsym->s.func->temp_reg;
create_param (fsym->func->parameters, param);
param->def->reg = fsym->func->temp_reg;
}
}
@ -1010,24 +1010,24 @@ build_scope (symbol_t *fsym, symtab_t *parent)
symtab_t *parameters;
symtab_t *locals;
if (!fsym->s.func) {
if (!fsym->func) {
internal_error (0, "function %s not defined", fsym->name);
}
if (!is_func (fsym->s.func->type)) {
if (!is_func (fsym->func->type)) {
internal_error (0, "function type %s not a funciton", fsym->name);
}
check_function (fsym);
fsym->s.func->label_scope = new_symtab (0, stab_label);
fsym->func->label_scope = new_symtab (0, stab_label);
parameters = new_symtab (parent, stab_param);
parameters->space = defspace_new (ds_virtual);
fsym->s.func->parameters = parameters;
fsym->func->parameters = parameters;
locals = new_symtab (parameters, stab_local);
locals->space = defspace_new (ds_virtual);
fsym->s.func->locals = locals;
fsym->func->locals = locals;
if (options.code.progsversion == PROG_VERSION) {
build_rua_scope (fsym);
@ -1056,23 +1056,23 @@ make_function (symbol_t *sym, const char *nice_name, defspace_t *space,
reloc_t *relocs = 0;
if (sym->sy_type != sy_func)
internal_error (0, "%s is not a function", sym->name);
if (storage == sc_extern && sym->s.func)
if (storage == sc_extern && sym->func)
return;
if (!sym->s.func) {
sym->s.func = new_function (sym->name, nice_name);
sym->s.func->sym = sym;
sym->s.func->type = unalias_type (sym->type);
if (!sym->func) {
sym->func = new_function (sym->name, nice_name);
sym->func->sym = sym;
sym->func->type = unalias_type (sym->type);
}
if (sym->s.func->def && sym->s.func->def->external
if (sym->func->def && sym->func->def->external
&& storage != sc_extern) {
//FIXME this really is not the right way
relocs = sym->s.func->def->relocs;
free_def (sym->s.func->def);
sym->s.func->def = 0;
relocs = sym->func->def->relocs;
free_def (sym->func->def);
sym->func->def = 0;
}
if (!sym->s.func->def) {
sym->s.func->def = new_def (sym->name, sym->type, space, storage);
reloc_attach_relocs (relocs, &sym->s.func->def->relocs);
if (!sym->func->def) {
sym->func->def = new_def (sym->name, sym->type, space, storage);
reloc_attach_relocs (relocs, &sym->func->def->relocs);
}
}
@ -1095,7 +1095,7 @@ begin_function (symbol_t *sym, const char *nicename, symtab_t *parent,
sym = new_symbol_type (sym->name, &type_func);
sym = function_symbol (sym, (specifier_t) { .is_overload = true });
}
if (sym->s.func && sym->s.func->def && sym->s.func->def->initialized) {
if (sym->func && sym->func->def && sym->func->def->initialized) {
error (0, "%s redefined", sym->name);
sym = new_symbol_type (sym->name, sym->type);
sym = function_symbol (sym, (specifier_t) { .is_overload = true });
@ -1104,31 +1104,31 @@ begin_function (symbol_t *sym, const char *nicename, symtab_t *parent,
if (far)
space = pr.far_data;
make_function (sym, nicename, space, storage);
if (!sym->s.func->def->external) {
sym->s.func->def->initialized = 1;
sym->s.func->def->constant = 1;
sym->s.func->def->nosave = 1;
add_function (sym->s.func);
reloc_def_func (sym->s.func, sym->s.func->def);
if (!sym->func->def->external) {
sym->func->def->initialized = 1;
sym->func->def->constant = 1;
sym->func->def->nosave = 1;
add_function (sym->func);
reloc_def_func (sym->func, sym->func->def);
sym->s.func->def->loc = pr.loc;
sym->func->def->loc = pr.loc;
}
sym->s.func->code = pr.code->size;
sym->func->code = pr.code->size;
sym->s.func->s_file = pr.loc.file;
sym->func->s_file = pr.loc.file;
if (options.code.debug) {
pr_lineno_t *lineno = new_lineno ();
sym->s.func->line_info = lineno - pr.linenos;
sym->func->line_info = lineno - pr.linenos;
}
build_scope (sym, parent);
return sym->s.func;
return sym->func;
}
static void
build_function (symbol_t *fsym)
{
const type_t *func_type = fsym->s.func->type;
const type_t *func_type = fsym->func->type;
if (func_type->t.func.num_params > PR_MAX_PARAMS) {
error (0, "too many params");
}
@ -1170,7 +1170,7 @@ build_code_function (symbol_t *fsym, const expr_t *state_expr,
if (state_expr) {
prepend_expr (statements, state_expr);
}
function_t *func = fsym->s.func;
function_t *func = fsym->func;
if (options.code.progsversion == PROG_VERSION) {
/* Create a function entry block to set up the stack frame and add the
* actual function code to that block. This ensure that the adjstk and
@ -1254,7 +1254,7 @@ build_code_function (symbol_t *fsym, const expr_t *state_expr,
// the final parameter is smaller than STACK_ALIGN words
defspace_alloc_aligned_highwater (space, 0, STACK_ALIGN);
}
return fsym->s.func;
return fsym->func;
}
function_t *
@ -1268,7 +1268,7 @@ build_builtin_function (symbol_t *sym, const expr_t *bi_val, int far,
error (bi_val, "%s is not a function", sym->name);
return 0;
}
if (sym->s.func && sym->s.func->def && sym->s.func->def->initialized) {
if (sym->func && sym->func->def && sym->func->def->initialized) {
error (bi_val, "%s redefined", sym->name);
return 0;
}
@ -1280,13 +1280,13 @@ build_builtin_function (symbol_t *sym, const expr_t *bi_val, int far,
if (far)
space = pr.far_data;
make_function (sym, 0, space, storage);
if (sym->s.func->def->external)
if (sym->func->def->external)
return 0;
sym->s.func->def->initialized = 1;
sym->s.func->def->constant = 1;
sym->s.func->def->nosave = 1;
add_function (sym->s.func);
sym->func->def->initialized = 1;
sym->func->def->constant = 1;
sym->func->def->nosave = 1;
add_function (sym->func);
if (is_int_val (bi_val))
bi = expr_int (bi_val);
@ -1296,15 +1296,15 @@ build_builtin_function (symbol_t *sym, const expr_t *bi_val, int far,
error (bi_val, "builtin functions must be positive or 0");
return 0;
}
sym->s.func->builtin = bi;
reloc_def_func (sym->s.func, sym->s.func->def);
sym->func->builtin = bi;
reloc_def_func (sym->func, sym->func->def);
build_function (sym);
// for debug info
build_scope (sym, current_symtab);
sym->s.func->parameters->space->size = 0;
sym->s.func->locals->space = sym->s.func->parameters->space;
return sym->s.func;
sym->func->parameters->space->size = 0;
sym->func->locals->space = sym->func->parameters->space;
return sym->func;
}
void

View file

@ -517,7 +517,7 @@ emit_selectors (void)
pr.far_data, sc_static);
if (!sel_sym->table)
symtab_addsymbol (pr.symtab, sel_sym);
sel_def = sel_sym->s.def;
sel_def = sel_sym->def;
sel_def->initialized = sel_def->constant = 1;
sel_def->nosave = 1;

View file

@ -217,9 +217,9 @@ qfo_encode_struct (const type_t *type, defspace_t *space)
if (i == num_fields)
internal_error (0, "whoa, what happened?");
if (sym->sy_type == sy_const)
offset = sym->s.value->v.int_val;
offset = sym->value->v.int_val;
else
offset = sym->s.offset;
offset = sym->offset;
ENC_DEF (strct->fields[i].type, field_types[i]);
ENC_STR (strct->fields[i].name, sym->name);
strct->fields[i].offset = offset;

View file

@ -1182,7 +1182,7 @@ get_arg_token (bool last, const rua_tok_t *arg, const rua_macro_t *macro,
if (arg->token == -rua_va_opt) {
sym = symtab_lookup (macro->params, arg->text);
auto m = sym->s.macro;
auto m = sym->macro;
m->update (m, scanner);
if (last) {
if (m->tokens) {
@ -1195,8 +1195,8 @@ get_arg_token (bool last, const rua_tok_t *arg, const rua_macro_t *macro,
}
if (arg->token == -rua_id && macro->params
&& (sym = symtab_lookup (macro->params, arg->text))
&& !macro->args[sym->s.offset]->next) {
auto a = macro->args[sym->s.offset];
&& !macro->args[sym->offset]->next) {
auto a = macro->args[sym->offset];
if (last) {
if (a->tokens) {
return (rua_tok_t *) a->tail;
@ -1244,11 +1244,11 @@ copy_arg_token (rua_macro_t *dst, bool skip_first, bool skip_last,
if (arg->token == -rua_va_opt) {
sym = symtab_lookup (macro->params, arg->text);
// __VA_OPT__'s macro was updated by get_arg_token
do_arg_copy (dst, sym->s.macro, skip_first, skip_last);
do_arg_copy (dst, sym->macro, skip_first, skip_last);
} else if (arg->token == -rua_id && macro->params
&& (sym = symtab_lookup (macro->params, arg->text))
&& !macro->args[sym->s.offset]->next) {
do_arg_copy (dst, macro->args[sym->s.offset], skip_first, skip_last);
&& !macro->args[sym->offset]->next) {
do_arg_copy (dst, macro->args[sym->offset], skip_first, skip_last);
} else if (!skip_first && !skip_last) {
copy_token (dst, arg);
}
@ -1412,12 +1412,12 @@ rescan:
macro->cursor = macro->cursor->next; // consume arg
if (n->token == -rua_va_opt) {
sym = symtab_lookup (macro->params, n->text);
auto m = sym->s.macro;
auto m = sym->macro;
m->update (m, scanner);
arg = m;
} else {
sym = symtab_lookup (macro->params, n->text);
arg = macro->args[sym->s.offset];
arg = macro->args[sym->offset];
}
stringize_arg (&e, arg, extra);
} else if (e.next && e.next->token == PRE_CONCAT) {
@ -1456,22 +1456,22 @@ rescan:
goto rescan;
}
sym = symtab_lookup (macro->params, e.text);
auto m = sym->s.macro;
auto m = sym->macro;
m->update (m, scanner);
queue_macro (extra, m);
goto rescan;
} else if (token == -rua_id && macro->params
&& (sym = symtab_lookup (macro->params, e.text))
&& !macro->args[sym->s.offset]->next) {
auto arg = macro->args[sym->s.offset];
&& !macro->args[sym->offset]->next) {
auto arg = macro->args[sym->offset];
queue_macro (extra, arg);
goto rescan;
} else if (token == -rua_id && !macro->name // in an arg
&& (sym = symtab_lookup (extra->macro_tab, e.text))
&& !sym->s.macro->next
&& !sym->s.macro->params) {
&& !sym->macro->next
&& !sym->macro->params) {
// force object-type macros in macro arguments to be expanded
auto m = sym->s.macro;
auto m = sym->macro;
if (m->update) {
m->update (m, scanner);
}
@ -1480,10 +1480,10 @@ rescan:
#if 0 // causes preproc-1.r to fail (see XXX below)
} else if (token == -rua_id && !macro->name // in an arg
&& (sym = symtab_lookup (extra->macro_tab, e.text))
&& !sym->s.macro->next
&& sym->s.macro->params) {
&& !sym->macro->next
&& sym->macro->params) {
// force function-type macros in macro arguments to be expanded
auto m = sym->s.macro;
auto m = sym->macro;
auto c = macro->cursor;
// XXX breakage for preproc-1.r: collect_args assumes the macro
// is complete, but in the case of preproc-1.r, it is not. In fact,
@ -1541,8 +1541,8 @@ rescan:
if ((extra->expand || !(extra->preprocessor || extra->suppressed))
&& token == -rua_id
&& (sym = symtab_lookup (extra->macro_tab, e.text))
&& !sym->s.macro->next) {
auto macro = sym->s.macro;
&& !sym->macro->next) {
auto macro = sym->macro;
if (macro->update) {
macro->update (macro, scanner);
}
@ -1692,7 +1692,7 @@ rua_macro_param (rua_macro_t *macro, const rua_tok_t *token, void *scanner)
}
auto sym = new_symbol (token->text);
sym->sy_type = sy_var;
sym->s.offset = macro->num_params++;
sym->offset = macro->num_params++;
symtab_addsymbol (macro->params, sym);
if (token->token == -rua_ellipsis) {
macro->num_params = -macro->num_params;
@ -1734,7 +1734,7 @@ build_va_opt (rua_macro_t *macro, rua_tok_t *t, rua_tok_t *u, int va_opt_ind)
auto sym = new_symbol (va_opt_name);
sym->sy_type = sy_macro;
sym->s.macro = va_opt;
sym->macro = va_opt;
symtab_addsymbol (macro->params, sym);
return va_opt_tok;
}
@ -1817,7 +1817,7 @@ hashhash_error:
auto macro_tab = extra->macro_tab;
auto sym = symtab_lookup (macro_tab, macro->name);
if (sym) {
auto o = sym->s.macro->tokens;
auto o = sym->macro->tokens;
auto n = macro->tokens;
while (o && n && o->text == n->text) {
o = o->next;
@ -1830,7 +1830,7 @@ hashhash_error:
}
sym = new_symbol (macro->name);
sym->sy_type = sy_macro;
sym->s.macro = macro;
sym->macro = macro;
symtab_addsymbol (macro_tab, sym);
}
@ -2287,8 +2287,8 @@ macro_empty (rua_macro_t *macro, yyscan_t scanner)
symbol_t *sym;
if (macro->params
&& (sym = symtab_lookup (macro->params, t->text))
&& !macro->args[sym->s.offset]->next) {
auto arg = macro->args[sym->s.offset];
&& !macro->args[sym->offset]->next) {
auto arg = macro->args[sym->offset];
arg->next = macro;
bool empty = macro_empty (arg, scanner);
arg->next = 0;
@ -2297,8 +2297,8 @@ macro_empty (rua_macro_t *macro, yyscan_t scanner)
}
}
if ((sym = symtab_lookup (extra->macro_tab, t->text))
&& !sym->s.macro->next) {
auto m = sym->s.macro;
&& !sym->macro->next) {
auto m = sym->macro;
if (m->params) {
macro->cursor = t;
collect_args (m, macro, scanner);

View file

@ -773,8 +773,8 @@ qc_nocode_func
} else {
initialize_def (sym, 0, current_symtab->space, spec.storage,
current_symtab);
if (sym->s.def)
sym->s.def->nosave |= spec.nosave;
if (sym->def)
sym->def->nosave |= spec.nosave;
}
}
;
@ -2460,8 +2460,8 @@ methoddef
sc_static);
class_finish_ivar_scope (current_class, ivar_scope,
current_func->locals);
method->func = sym->s.func;
method->def = sym->s.func->def;
method->func = sym->func;
method->def = sym->func->def;
current_symtab = current_func->locals;
current_storage = sc_local;
}
@ -2481,8 +2481,8 @@ methoddef
method = class_find_method (current_class, method);
sym = method_symbol (current_class, method);
build_builtin_function (sym, $5, 1, sc_static);
method->func = sym->s.func;
method->def = sym->s.func->def;
method->func = sym->func;
method->def = sym->func->def;
}
;

View file

@ -246,8 +246,8 @@ program_head
sym->type = &type_int;
initialize_def (sym, 0, current_symtab->space, sc_global,
current_symtab);
if (sym->s.def) {
sym->s.def->nosave = 1;
if (sym->def) {
sym->def->nosave = 1;
}
}
$$->type = parse_params (&type_void, 0);
@ -426,7 +426,7 @@ statement
{
$$ = $1;
if ($$->type == ex_symbol && $$->symbol->sy_type == sy_func) {
if ($$->symbol->s.func != current_func) {
if ($$->symbol->func != current_func) {
$$ = error ($$, "cannot assign to other function");
} else {
symbol_t *ret = function_value (current_func);

View file

@ -387,7 +387,7 @@ return_operand (const type_t *type, const expr_t *expr)
if (!return_symbol->table) {
symtab_addsymbol (pr.symtab, return_symbol);
}
def_t *return_def = return_symbol->s.def;
def_t *return_def = return_symbol->def;
return def_operand (alias_def (return_def, type, 0), 0, expr);
}
@ -1892,14 +1892,14 @@ expr_symbol (sblock_t *sblock, const expr_t *e, operand_t **op)
symbol_t *sym = e->symbol;
if (sym->sy_type == sy_var) {
*op = def_operand (sym->s.def, sym->type, e);
*op = def_operand (sym->def, sym->type, e);
} else if (sym->sy_type == sy_const) {
*op = value_operand (sym->s.value, e);
*op = value_operand (sym->value, e);
} else if (sym->sy_type == sy_func) {
if (!sym->s.func) {
if (!sym->func) {
make_function (sym, 0, pr.symtab->space, sc_extern);
}
*op = def_operand (sym->s.func->def, 0, e);
*op = def_operand (sym->func->def, 0, e);
} else {
internal_error (e, "unexpected symbol type: %s for %s",
symtype_str (sym->sy_type), sym->name);

View file

@ -179,7 +179,7 @@ build_struct (int su, symbol_t *tag, symtab_t *symtab, const type_t *type,
}
if (su == 's') {
symtab->size = RUP (symtab->size + base, s->type->alignment) - base;
s->s.offset = symtab->size;
s->offset = symtab->size;
symtab->size += type_size (s->type);
} else {
int size = type_size (s->type);
@ -193,7 +193,7 @@ build_struct (int su, symbol_t *tag, symtab_t *symtab, const type_t *type,
if (s->visibility == vis_anonymous) {
symtab_t *anonymous;
symbol_t *t = s->next;
int offset = s->s.offset;
int offset = s->offset;
if (!is_struct (s->type) && !is_union (s->type)) {
internal_error (0, "non-struct/union anonymous field");
@ -209,7 +209,7 @@ build_struct (int su, symbol_t *tag, symtab_t *symtab, const type_t *type,
} else {
s->next = copy_symbol (as);
s = s->next;
s->s.offset += offset;
s->offset += offset;
s->table = symtab;
s->no_auto_init = 1;
Hash_Add (symtab->tab, s);
@ -265,7 +265,7 @@ finish_enum (symbol_t *sym)
enum_sym = new_symbol_type (name->name, enum_type);
enum_sym->sy_type = sy_const;
enum_sym->s.value = name->s.value;
enum_sym->value = name->value;
symtab_addsymbol (enum_tab->parent, enum_sym);
}
return sym;
@ -286,7 +286,7 @@ add_enum (symbol_t *enm, symbol_t *name, const expr_t *val)
name->type = enum_type;
value = 0;
if (enum_tab->symbols)
value = ((symbol_t *)(enum_tab->symtail))->s.value->v.uint_val + 1;
value = ((symbol_t *)(enum_tab->symtail))->value->v.uint_val + 1;
if (val) {
val = convert_name (val);
if (!is_constant (val))
@ -296,7 +296,7 @@ add_enum (symbol_t *enm, symbol_t *name, const expr_t *val)
else
value = expr_int (val);
}
name->s.value = new_int_val (value);
name->value = new_int_val (value);
symtab_addsymbol (enum_tab, name);
}
@ -314,12 +314,12 @@ enum_as_bool (const type_t *enm, expr_t **zero, expr_t **one)
for (sym = symtab->symbols; sym; sym = sym->next) {
if (sym->sy_type != sy_const)
continue;
val = sym->s.value->v.int_val;
val = sym->value->v.int_val;
if (!val) {
zero_sym = sym;
} else {
if (one_sym) {
v = one_sym->s.value->v.int_val;
v = one_sym->value->v.int_val;
if (val * val > v * v)
continue;
}
@ -401,7 +401,7 @@ emit_structure (const char *name, int su, struct_def_t *defs,
}
struct_sym = make_symbol (name, type, space, storage);
struct_def = struct_sym->s.def;
struct_def = struct_sym->def;
if (struct_def->initialized)
internal_error (0, "structure %s already initialized", name);
struct_def->initialized = struct_def->constant = 1;
@ -412,7 +412,7 @@ emit_structure (const char *name, int su, struct_def_t *defs,
field_def.type = field_sym->type;
field_def.name = save_string (va (0, "%s.%s", name, field_sym->name));
field_def.space = struct_def->space;
field_def.offset = struct_def->offset + field_sym->s.offset;
field_def.offset = struct_def->offset + field_sym->offset;
if (!defs[i].emit) {
//FIXME relocs? arrays? structs?
pr_type_t *val = (pr_type_t *) data;

View file

@ -67,7 +67,7 @@ static ex_value_t * __attribute__((pure))
get_value (const expr_t *e)
{
if (e->type == ex_symbol)
return e->symbol->s.value;
return e->symbol->value;
if (e->type != ex_value)
internal_error (e, "bogus case label");
return e->value;
@ -383,7 +383,7 @@ check_enum_switch (switch_block_t *switch_block)
for (enum_val = type->t.symtab->symbols; enum_val;
enum_val = enum_val->next) {
cl.value = new_int_expr (enum_val->s.value->v.int_val, false);
cl.value = new_int_expr (enum_val->value->v.int_val, false);
if (!Hash_FindElement (switch_block->labels, &cl)) {
warning (switch_block->test,
"enumeration value `%s' not handled in switch",

View file

@ -176,11 +176,10 @@ symbol_t *
copy_symbol (symbol_t *symbol)
{
symbol_t *sym = new_symbol (symbol->name);
sym->visibility = symbol->visibility;
sym->type = symbol->type;
*sym = *symbol;
sym->next = nullptr;
sym->table = nullptr;
sym->params = copy_params (symbol->params);
sym->sy_type = symbol->sy_type;
sym->s = symbol->s;
return sym;
}
@ -238,15 +237,15 @@ make_symbol (const char *name, const type_t *type, defspace_t *space,
sym = new_symbol_type (name, type);
}
}
if (sym->s.def && sym->s.def->external && storage != sc_extern) {
if (sym->def && sym->def->external && storage != sc_extern) {
//FIXME this really is not the right way
relocs = sym->s.def->relocs;
free_def (sym->s.def);
sym->s.def = 0;
relocs = sym->def->relocs;
free_def (sym->def);
sym->def = 0;
}
if (!sym->s.def) {
sym->s.def = new_def (name, type, space, storage);
reloc_attach_relocs (relocs, &sym->s.def->relocs);
if (!sym->def) {
sym->def = new_def (name, type, space, storage);
reloc_attach_relocs (relocs, &sym->def->relocs);
}
sym->sy_type = sy_var;
return sym;
@ -303,8 +302,8 @@ declare_symbol (specifier_t spec, const expr_t *init, symtab_t *symtab)
} else {
s->type = find_type (s->type);
initialize_def (s, init, space, spec.storage, symtab);
if (s->s.def) {
s->s.def->nosave |= spec.nosave;
if (s->def) {
s->def->nosave |= spec.nosave;
}
}
}

View file

@ -1788,11 +1788,11 @@ init_types (void)
symbol_t *sym;
sym = new_symbol_type ("v", &type_vector);
sym->s.offset = 0;
sym->offset = 0;
symtab_addsymbol (type_quaternion.t.symtab, sym);
sym = new_symbol_type ("s", &type_float);
sym->s.offset = 3;
sym->offset = 3;
symtab_addsymbol (type_quaternion.t.symtab, sym);
}
#define VEC_TYPE(type_name, base_type) build_vector_struct (&type_##type_name);

View file

@ -308,7 +308,7 @@ value_store (pr_type_t *dst, const type_t *dstType, const expr_t *src)
if (src->type == ex_symbol && src->symbol->sy_type == sy_var) {
// initialized global def treated as a constant
// from the tests in cast_expr, the def is known to be constant
def_t *def = src->symbol->s.def;
def_t *def = src->symbol->def;
memcpy (dst, &D_PACKED (pr_type_t, def), dstSize);
return;
}
@ -317,7 +317,7 @@ value_store (pr_type_t *dst, const type_t *dstType, const expr_t *src)
val = src->value;
}
if (src->type == ex_symbol && src->symbol->sy_type == sy_const) {
val = src->symbol->s.value;
val = src->symbol->value;
}
if (!val) {
internal_error (src, "unexpected constant expression type");
@ -671,7 +671,7 @@ emit_value (ex_value_t *value, def_t *def)
} else {
symbol_t *sym;
sym = make_symbol (".zero", &type_zero, 0, sc_extern);
return sym->s.def;
return sym->def;
}
}
if (imm) {
@ -742,7 +742,7 @@ clear_immediates (void)
Hash_SetHashCompare (value_imm_defs, imm_get_hash, imm_compare);
}
def = make_symbol (".zero", &type_zero, 0, sc_extern)->s.def;
def = make_symbol (".zero", &type_zero, 0, sc_extern)->def;
memset (&zero_val, 0, sizeof (zero_val));
make_def_imm (def, string_imm_defs, &zero_val);