diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-09-07 19:23:00 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-09-07 19:23:00 +0100 |
| commit | 7ba13a18a33d8f852eb41b58da662ddb4649d04f (patch) | |
| tree | 89663aff3ad0c5e5f62a3432d269dcee050a71ed /src/codegen | |
| parent | 2c4193a24226b084797af61e29c8355835c179a8 (diff) | |
Basic variadic `print` procedure
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/codegen.cpp | 4 | ||||
| -rw-r--r-- | src/codegen/print_llvm.cpp | 2 | ||||
| -rw-r--r-- | src/codegen/ssa.cpp | 6 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/codegen/codegen.cpp b/src/codegen/codegen.cpp index 5d8df5060..13a362ce5 100644 --- a/src/codegen/codegen.cpp +++ b/src/codegen/codegen.cpp @@ -238,7 +238,7 @@ void ssa_gen_tree(ssaGen *s) { case Basic_uint: { tag = ssa_add_local_generated(proc, t_type_info_integer); b32 is_unsigned = (basic_types[t->Basic.kind].flags & BasicFlag_Unsigned) != 0; - ssaValue *bits = ssa_make_value_constant(a, t_int, make_exact_value_integer(8*type_size_of(m->sizes, a, t))); + ssaValue *bits = ssa_make_value_constant(a, t_int, make_exact_value_integer(type_size_of(m->sizes, a, t))); ssaValue *is_signed = ssa_make_value_constant(a, t_bool, make_exact_value_bool(!is_unsigned)); ssa_emit_store(proc, ssa_emit_struct_gep(proc, tag, v_zero32, t_int_ptr), bits); ssa_emit_store(proc, ssa_emit_struct_gep(proc, tag, v_one32, t_bool_ptr), is_signed); @@ -247,7 +247,7 @@ void ssa_gen_tree(ssaGen *s) { case Basic_f32: case Basic_f64: { tag = ssa_add_local_generated(proc, t_type_info_float); - ssaValue *bits = ssa_make_value_constant(a, t_int, make_exact_value_integer(8*type_size_of(m->sizes, a, t))); + ssaValue *bits = ssa_make_value_constant(a, t_int, make_exact_value_integer(type_size_of(m->sizes, a, t))); ssa_emit_store(proc, ssa_emit_struct_gep(proc, tag, v_zero32, t_int_ptr), bits); } break; diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index ea30d910c..cc349588c 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -146,7 +146,7 @@ void ssa_print_type(ssaFileBuffer *f, BaseTypeSizes s, Type *t) { case Basic_u16: ssa_fprintf(f, "i16"); break; case Basic_u32: ssa_fprintf(f, "i32"); break; case Basic_u64: ssa_fprintf(f, "i64"); break; - case Basic_u128: ssa_fprintf(f, "u128"); break; + case Basic_u128: ssa_fprintf(f, "i128"); break; case Basic_f32: ssa_fprintf(f, "float"); break; case Basic_f64: ssa_fprintf(f, "double"); break; case Basic_rawptr: ssa_fprintf(f, "%%..rawptr"); break; diff --git a/src/codegen/ssa.cpp b/src/codegen/ssa.cpp index a5fe3c566..fc55600ab 100644 --- a/src/codegen/ssa.cpp +++ b/src/codegen/ssa.cpp @@ -2085,12 +2085,12 @@ ssaValue *ssa_build_single_expr(ssaProcedure *proc, AstNode *expr, TypeAndValue // append :: proc(s: ^[]Type, item: Type) -> bool AstNode *sptr_node = ce->arg_list; AstNode *item_node = ce->arg_list->next; - ssaValue *slice_ptr = ssa_build_addr(proc, sptr_node).addr; + ssaValue *slice_ptr = ssa_build_expr(proc, sptr_node); ssaValue *slice = ssa_emit_load(proc, slice_ptr); ssaValue *elem = ssa_slice_elem(proc, slice); - ssaValue *len = ssa_slice_len(proc, slice); - ssaValue *cap = ssa_slice_cap(proc, slice); + ssaValue *len = ssa_slice_len(proc, slice); + ssaValue *cap = ssa_slice_cap(proc, slice); Type *elem_type = type_deref(ssa_type(elem)); |