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.
master
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,10 +1952,9 @@ const EmitZIR = struct {
};
_ = try self.emitUnnamedDecl(&export_inst.base);
}
} else {
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));
}
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));
}
}

View File

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