aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2018-11-27 20:36:44 -0500
committerAndrew Kelley <andrew@ziglang.org>2018-11-27 20:36:44 -0500
commite3bf40742d5b93c10b8e68b202294badb508c3e7 (patch)
tree73a9219fd0f5ec7985eb9f121390fa2db24654f9 /src/codegen.cpp
parentbb3ac177a83caf52556818e9ea163ac166bb6c07 (diff)
parent1fb15be05f1037aad53d2db32d13123363365d10 (diff)
downloadzig-e3bf40742d5b93c10b8e68b202294badb508c3e7.tar.gz
zig-e3bf40742d5b93c10b8e68b202294badb508c3e7.zip
Merge branch 'master' into freebsd2
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 40f71e38fe..1033ed8120 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -129,6 +129,11 @@ CodeGen *codegen_create(Buf *root_src_path, const ZigTarget *target, OutType out
Buf *src_dir = buf_alloc();
os_path_split(root_src_path, src_dir, src_basename);
+ if (buf_len(src_basename) == 0) {
+ fprintf(stderr, "Invalid root source path: %s\n", buf_ptr(root_src_path));
+ exit(1);
+ }
+
g->root_package = new_package(buf_ptr(src_dir), buf_ptr(src_basename));
g->std_package = new_package(buf_ptr(g->zig_std_dir), "index.zig");
g->root_package->package_table.put(buf_create_from_str("std"), g->std_package);
@@ -1645,7 +1650,7 @@ static LLVMValueRef gen_widen_or_shorten(CodeGen *g, bool want_runtime_safety, Z
zig_unreachable();
}
- if (actual_bits >= wanted_bits && actual_type->id == ZigTypeIdInt &&
+ if (actual_type->id == ZigTypeIdInt &&
!wanted_type->data.integral.is_signed && actual_type->data.integral.is_signed &&
want_runtime_safety)
{
@@ -6281,8 +6286,14 @@ static void do_code_gen(CodeGen *g) {
}
if (ir_get_var_is_comptime(var))
continue;
- if (type_requires_comptime(var->value->type))
- continue;
+ switch (type_requires_comptime(g, var->value->type)) {
+ case ReqCompTimeInvalid:
+ zig_unreachable();
+ case ReqCompTimeYes:
+ continue;
+ case ReqCompTimeNo:
+ break;
+ }
if (var->src_arg_index == SIZE_MAX) {
var->value_ref = build_alloca(g, var->value->type, buf_ptr(&var->name), var->align_bytes);
@@ -8172,7 +8183,11 @@ void codegen_build_and_link(CodeGen *g) {
os_path_join(stage1_dir, buf_create_from_str("build"), manifest_dir);
if ((err = check_cache(g, manifest_dir, &digest))) {
- fprintf(stderr, "Unable to check cache: %s\n", err_str(err));
+ if (err == ErrorCacheUnavailable) {
+ // message already printed
+ } else {
+ fprintf(stderr, "Unable to check cache: %s\n", err_str(err));
+ }
exit(1);
}