mirror of
https://github.com/ziglang/zig.git
synced 2026-02-14 05:20:34 +00:00
stage2: fix use-after-free when printing ZIR
This commit is contained in:
parent
31b58acdae
commit
15bcfcd368
@ -872,6 +872,8 @@ pub const Module = struct {
|
||||
};
|
||||
|
||||
pub fn deinit(self: *Module, allocator: *Allocator) void {
|
||||
self.metadata.deinit();
|
||||
self.body_metadata.deinit();
|
||||
allocator.free(self.decls);
|
||||
self.arena.deinit();
|
||||
self.* = undefined;
|
||||
@ -1543,8 +1545,8 @@ pub fn emit(allocator: *Allocator, old_module: IrModule) !Module {
|
||||
.metadata = std.AutoHashMap(*Inst, Module.MetaData).init(allocator),
|
||||
.body_metadata = std.AutoHashMap(*Module.Body, Module.BodyMetaData).init(allocator),
|
||||
};
|
||||
defer ctx.metadata.deinit();
|
||||
defer ctx.body_metadata.deinit();
|
||||
errdefer ctx.metadata.deinit();
|
||||
errdefer ctx.body_metadata.deinit();
|
||||
defer ctx.block_table.deinit();
|
||||
defer ctx.loop_table.deinit();
|
||||
defer ctx.decls.deinit(allocator);
|
||||
|
||||
@ -28,7 +28,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\@unnamed$5 = export(@unnamed$4, "entry")
|
||||
\\@unnamed$6 = fntype([], @void, cc=C)
|
||||
\\@entry = fn(@unnamed$6, {
|
||||
\\ %0 = returnvoid()
|
||||
\\ %0 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\
|
||||
);
|
||||
@ -75,7 +75,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\@3 = int(3)
|
||||
\\@unnamed$6 = fntype([], @void, cc=C)
|
||||
\\@entry = fn(@unnamed$6, {
|
||||
\\ %0 = returnvoid()
|
||||
\\ %0 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\@entry__anon_1 = str("2\x08\x01\n")
|
||||
\\@9 = declref("9__anon_0")
|
||||
@ -117,18 +117,18 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\@unnamed$5 = export(@unnamed$4, "entry")
|
||||
\\@unnamed$6 = fntype([], @void, cc=C)
|
||||
\\@entry = fn(@unnamed$6, {
|
||||
\\ %0 = call(@a, [], modifier=auto)
|
||||
\\ %1 = returnvoid()
|
||||
\\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
|
||||
\\ %1 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\@unnamed$8 = fntype([], @void, cc=C)
|
||||
\\@a = fn(@unnamed$8, {
|
||||
\\ %0 = call(@b, [], modifier=auto)
|
||||
\\ %1 = returnvoid()
|
||||
\\ %0 = call(@b, [], modifier=auto) ; deaths=0b1000000000000001
|
||||
\\ %1 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\@unnamed$10 = fntype([], @void, cc=C)
|
||||
\\@b = fn(@unnamed$10, {
|
||||
\\ %0 = call(@a, [], modifier=auto)
|
||||
\\ %1 = returnvoid()
|
||||
\\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
|
||||
\\ %1 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\
|
||||
);
|
||||
@ -193,7 +193,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\@unnamed$5 = export(@unnamed$4, "entry")
|
||||
\\@unnamed$6 = fntype([], @void, cc=C)
|
||||
\\@entry = fn(@unnamed$6, {
|
||||
\\ %0 = returnvoid()
|
||||
\\ %0 = returnvoid() ; deaths=0b1000000000000000
|
||||
\\})
|
||||
\\
|
||||
);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user