Fix type system in SSA generation

Removes a lot of dodgy things
Still needs to be tested a lot and better refactored
This commit is contained in:
Ginger Bill
2016-09-03 22:07:16 +01:00
parent 7f884ed251
commit cdd8eadda1
4 changed files with 173 additions and 206 deletions

View File

@@ -338,7 +338,7 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) {
} break;
case ssaInstr_Store: {
Type *type = ssa_type(instr->Store.address);
Type *type = ssa_type(instr);
ssa_fprintf(f, "store ");
ssa_print_type(f, m->sizes, type);
ssa_fprintf(f, " ");
@@ -368,10 +368,10 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) {
ssa_fprintf(f, "inbounds ");
}
ssa_print_type(f, m->sizes, et);
ssa_print_type(f, m->sizes, type_deref(et));
ssa_fprintf(f, ", ");
ssa_print_type(f, m->sizes, et);
ssa_fprintf(f, "* ");
ssa_fprintf(f, " ");
ssa_print_value(f, m, instr->GetElementPtr.address, et);
for (isize i = 0; i < instr->GetElementPtr.index_count; i++) {
ssaValue *index = instr->GetElementPtr.indices[i];