stage2: make sure to emit the ZIR instructions of exported functions

Previously the emitted ZIR code would not have the ZIR instructions
of the exported functions.
This commit is contained in:
Timon Kruiper 2020-12-03 15:01:57 +01:00 committed by Andrew Kelley
parent 5b6cbd2e7c
commit ac85e1f2c8
2 changed files with 16 additions and 13 deletions

View File

@ -1952,12 +1952,11 @@ const EmitZIR = struct {
}; };
_ = try self.emitUnnamedDecl(&export_inst.base); _ = try self.emitUnnamedDecl(&export_inst.base);
} }
} else { }
const new_decl = try self.emitTypedValue(ir_decl.src(), ir_decl.typed_value.most_recent.typed_value); const new_decl = try self.emitTypedValue(ir_decl.src(), ir_decl.typed_value.most_recent.typed_value);
new_decl.name = try self.arena.allocator.dupe(u8, mem.spanZ(ir_decl.name)); new_decl.name = try self.arena.allocator.dupe(u8, mem.spanZ(ir_decl.name));
} }
} }
}
const ZirBody = struct { const ZirBody = struct {
inst_table: *std.AutoHashMap(*ir.Inst, *Inst), inst_table: *std.AutoHashMap(*ir.Inst, *Inst),

View File

@ -26,8 +26,9 @@ pub fn addCases(ctx: *TestContext) !void {
\\@9__anon_0 = str("entry") \\@9__anon_0 = str("entry")
\\@unnamed$4 = str("entry") \\@unnamed$4 = str("entry")
\\@unnamed$5 = export(@unnamed$4, "entry") \\@unnamed$5 = export(@unnamed$4, "entry")
\\@unnamed$6 = fntype([], @void, cc=C) \\@11 = primitive(void_value)
\\@entry = fn(@unnamed$6, { \\@unnamed$7 = fntype([], @void, cc=C)
\\@entry = fn(@unnamed$7, {
\\ %0 = returnvoid() ; deaths=0b1000000000000000 \\ %0 = returnvoid() ; deaths=0b1000000000000000
\\}) \\})
\\ \\
@ -83,6 +84,7 @@ pub fn addCases(ctx: *TestContext) !void {
\\@9__anon_0 = str("entry") \\@9__anon_0 = str("entry")
\\@unnamed$11 = str("entry") \\@unnamed$11 = str("entry")
\\@unnamed$12 = export(@unnamed$11, "entry") \\@unnamed$12 = export(@unnamed$11, "entry")
\\@11 = primitive(void_value)
\\ \\
); );
@ -116,18 +118,19 @@ pub fn addCases(ctx: *TestContext) !void {
\\@9__anon_0 = str("entry") \\@9__anon_0 = str("entry")
\\@unnamed$4 = str("entry") \\@unnamed$4 = str("entry")
\\@unnamed$5 = export(@unnamed$4, "entry") \\@unnamed$5 = export(@unnamed$4, "entry")
\\@unnamed$6 = fntype([], @void, cc=C) \\@11 = primitive(void_value)
\\@entry = fn(@unnamed$6, { \\@unnamed$7 = fntype([], @void, cc=C)
\\@entry = fn(@unnamed$7, {
\\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
\\ %1 = returnvoid() ; deaths=0b1000000000000000 \\ %1 = returnvoid() ; deaths=0b1000000000000000
\\}) \\})
\\@unnamed$8 = fntype([], @void, cc=C) \\@unnamed$9 = fntype([], @void, cc=C)
\\@a = fn(@unnamed$8, { \\@a = fn(@unnamed$9, {
\\ %0 = call(@b, [], modifier=auto) ; deaths=0b1000000000000001 \\ %0 = call(@b, [], modifier=auto) ; deaths=0b1000000000000001
\\ %1 = returnvoid() ; deaths=0b1000000000000000 \\ %1 = returnvoid() ; deaths=0b1000000000000000
\\}) \\})
\\@unnamed$10 = fntype([], @void, cc=C) \\@unnamed$11 = fntype([], @void, cc=C)
\\@b = fn(@unnamed$10, { \\@b = fn(@unnamed$11, {
\\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
\\ %1 = returnvoid() ; deaths=0b1000000000000000 \\ %1 = returnvoid() ; deaths=0b1000000000000000
\\}) \\})
@ -192,8 +195,9 @@ pub fn addCases(ctx: *TestContext) !void {
\\@9__anon_2 = str("entry") \\@9__anon_2 = str("entry")
\\@unnamed$4 = str("entry") \\@unnamed$4 = str("entry")
\\@unnamed$5 = export(@unnamed$4, "entry") \\@unnamed$5 = export(@unnamed$4, "entry")
\\@unnamed$6 = fntype([], @void, cc=C) \\@11 = primitive(void_value)
\\@entry = fn(@unnamed$6, { \\@unnamed$7 = fntype([], @void, cc=C)
\\@entry = fn(@unnamed$7, {
\\ %0 = returnvoid() ; deaths=0b1000000000000000 \\ %0 = returnvoid() ; deaths=0b1000000000000000
\\}) \\})
\\ \\