diff --git a/core/os.odin b/core/os.odin index fa9b23649..d3f6b79c6 100644 --- a/core/os.odin +++ b/core/os.odin @@ -8,13 +8,13 @@ write_string :: proc(fd: Handle, str: string) -> (int, Errno) { read_entire_file :: proc(name: string) -> ([]byte, bool) { fd, err := open(name, O_RDONLY, 0); - if err != ERROR_NONE { + if err != 0 { return nil, false; } defer close(fd); length: i64; - if length, err = file_size(fd); err != ERROR_NONE { + if length, err = file_size(fd); err != 0 { return nil, false; } @@ -28,7 +28,7 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { } bytes_read, read_err := read(fd, data); - if read_err != ERROR_NONE { + if read_err != 0 { free(data); return nil, false; } diff --git a/src/ir.c b/src/ir.c index 28b698b0d..b013c3227 100644 --- a/src/ir.c +++ b/src/ir.c @@ -3658,22 +3658,22 @@ irValue *ir_build_expr(irProcedure *proc, AstNode *expr) { irValue *cond = ir_build_cond(proc, te->cond, then, else_); ir_start_block(proc, then); + Type *type = type_of_expr(proc->module->info, expr); + ir_open_scope(proc); - array_add(&edges, ir_build_expr(proc, te->x)); + array_add(&edges, ir_emit_conv(proc, ir_build_expr(proc, te->x), type)); ir_close_scope(proc, irDeferExit_Default, NULL); ir_emit_jump(proc, done); ir_start_block(proc, else_); ir_open_scope(proc); - array_add(&edges, ir_build_expr(proc, te->y)); + array_add(&edges, ir_emit_conv(proc, ir_build_expr(proc, te->y), type)); ir_close_scope(proc, irDeferExit_Default, NULL); ir_emit_jump(proc, done); ir_start_block(proc, done); - Type *type = type_of_expr(proc->module->info, expr); - return ir_emit(proc, ir_instr_phi(proc, edges, type)); case_end;