aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-02-08 18:05:54 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-02-08 21:00:07 +0100
commit9981b3fd2f7ab85146efa9feebe08a795411d131 (patch)
tree426608bca102609dd4e4926179b01b68af7b4081 /src/codegen.zig
parentf50203c83667ed3ad0c57fdc953322a5f9c221ac (diff)
downloadzig-9981b3fd2f7ab85146efa9feebe08a795411d131.tar.gz
zig-9981b3fd2f7ab85146efa9feebe08a795411d131.zip
stage2: tiny improvements all over the place
* pass more x64 behavior tests * return with a TODO error when lowering a decl with no runtime bits * insert some debug logs for tracing recursive descent down the type-value tree when lowering types * print `Decl`'s name when print debugging `decl_ref` value
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 059d2adc14..5873fd439c 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -150,6 +150,8 @@ pub fn generateSymbol(
const tracy = trace(@src());
defer tracy.end();
+ log.debug("generateSymbol: ty = {}, val = {}", .{ typed_value.ty, typed_value.val });
+
if (typed_value.val.isUndefDeep()) {
const target = bin_file.options.target;
const abi_size = try math.cast(usize, typed_value.ty.abiSize(target));
@@ -485,6 +487,18 @@ fn lowerDeclRef(
return Result{ .appended = {} };
}
+ const is_fn_body = decl.ty.zigTypeTag() == .Fn;
+ if (!is_fn_body and !decl.ty.hasRuntimeBits()) {
+ return Result{
+ .fail = try ErrorMsg.create(
+ bin_file.allocator,
+ src_loc,
+ "TODO handle void types when lowering decl ref",
+ .{},
+ ),
+ };
+ }
+
if (decl.analysis != .complete) return error.AnalysisFail;
decl.markAlive();
const vaddr = vaddr: {