diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-08 18:05:54 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-02-08 21:00:07 +0100 |
| commit | 9981b3fd2f7ab85146efa9feebe08a795411d131 (patch) | |
| tree | 426608bca102609dd4e4926179b01b68af7b4081 /src/codegen.zig | |
| parent | f50203c83667ed3ad0c57fdc953322a5f9c221ac (diff) | |
| download | zig-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.zig | 14 |
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: { |
