aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-01-02 13:40:23 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-01-02 19:11:55 -0700
commit006e7f68056af62ae7713d7ef228841d11874735 (patch)
tree0d64585b1d78040506a898140ddc619e002b2147 /src/codegen.zig
parent9362f382ab7023592cc1d71044217b847b122406 (diff)
downloadzig-006e7f68056af62ae7713d7ef228841d11874735.tar.gz
zig-006e7f68056af62ae7713d7ef228841d11874735.zip
stage2: re-use ZIR for comptime and inline calls
Instead of freeing ZIR after semantic analysis, we keep it around so that it can be used for comptime calls, inline calls, and generic function calls. ZIR memory is now managed by the Decl arena. Debug dump() functions are conditionally compiled; only available in Debug builds of the compiler. Add a test for an inline function call.
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 588c3dec4c..58be73a31c 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -532,7 +532,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
self.code.items.len += 4;
try self.dbgSetPrologueEnd();
- try self.genBody(self.mod_fn.data.body);
+ try self.genBody(self.mod_fn.body);
const stack_end = self.max_end_stack;
if (stack_end > math.maxInt(i32))
@@ -576,7 +576,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
});
} else {
try self.dbgSetPrologueEnd();
- try self.genBody(self.mod_fn.data.body);
+ try self.genBody(self.mod_fn.body);
try self.dbgSetEpilogueBegin();
}
},
@@ -593,7 +593,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
try self.dbgSetPrologueEnd();
- try self.genBody(self.mod_fn.data.body);
+ try self.genBody(self.mod_fn.body);
// Backpatch stack offset
const stack_end = self.max_end_stack;
@@ -638,13 +638,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
writeInt(u32, try self.code.addManyAsArray(4), Instruction.pop(.al, .{ .fp, .pc }).toU32());
} else {
try self.dbgSetPrologueEnd();
- try self.genBody(self.mod_fn.data.body);
+ try self.genBody(self.mod_fn.body);
try self.dbgSetEpilogueBegin();
}
},
else => {
try self.dbgSetPrologueEnd();
- try self.genBody(self.mod_fn.data.body);
+ try self.genBody(self.mod_fn.body);
try self.dbgSetEpilogueBegin();
},
}