authorgravatar for timonkruiper@gmail.comTimon Kruiper <timonkruiper@gmail.com> 2020-12-03 15:01:57+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-12-03 11:46:35-08:00
logac85e1f2c8959b8aba0862d31d531f5fa8d5d14c
tree6222e9fcbbaf3e45870932d54cbdbd878e591cca
parent5b6cbd2e7cd00b19bdcfdeefc9b5d378ce8867a6

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.

2 files changed, 16 insertions(+), 13 deletions(-)

src/zir.zig+2-3
...@@ -1952,10 +1952,9 @@ const EmitZIR = struct {...@@ -1952,10 +1952,9 @@ const EmitZIR = struct {
1952 };1952 };
1953 _ = try self.emitUnnamedDecl(&export_inst.base);1953 _ = try self.emitUnnamedDecl(&export_inst.base);
1954 }1954 }
1955 } else {
1956 const new_decl = try self.emitTypedValue(ir_decl.src(), ir_decl.typed_value.most_recent.typed_value);
1957 new_decl.name = try self.arena.allocator.dupe(u8, mem.spanZ(ir_decl.name));
1958 }1955 }
1956 const new_decl = try self.emitTypedValue(ir_decl.src(), ir_decl.typed_value.most_recent.typed_value);
1957 new_decl.name = try self.arena.allocator.dupe(u8, mem.spanZ(ir_decl.name));
1959 }1958 }
1960 }1959 }
19611960
test/stage2/zir.zig+14-10
...@@ -26,8 +26,9 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -26,8 +26,9 @@ pub fn addCases(ctx: *TestContext) !void {
26 \\@9__anon_0 = str("entry")26 \\@9__anon_0 = str("entry")
27 \\@unnamed$4 = str("entry")27 \\@unnamed$4 = str("entry")
28 \\@unnamed$5 = export(@unnamed$4, "entry")28 \\@unnamed$5 = export(@unnamed$4, "entry")
29 \\@unnamed$6 = fntype([], @void, cc=C)29 \\@11 = primitive(void_value)
30 \\@entry = fn(@unnamed$6, {30 \\@unnamed$7 = fntype([], @void, cc=C)
31 \\@entry = fn(@unnamed$7, {
31 \\ %0 = returnvoid() ; deaths=0b100000000000000032 \\ %0 = returnvoid() ; deaths=0b1000000000000000
32 \\})33 \\})
33 \\34 \\
...@@ -83,6 +84,7 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -83,6 +84,7 @@ pub fn addCases(ctx: *TestContext) !void {
83 \\@9__anon_0 = str("entry")84 \\@9__anon_0 = str("entry")
84 \\@unnamed$11 = str("entry")85 \\@unnamed$11 = str("entry")
85 \\@unnamed$12 = export(@unnamed$11, "entry")86 \\@unnamed$12 = export(@unnamed$11, "entry")
87 \\@11 = primitive(void_value)
86 \\88 \\
87 );89 );
8890
...@@ -116,18 +118,19 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -116,18 +118,19 @@ pub fn addCases(ctx: *TestContext) !void {
116 \\@9__anon_0 = str("entry")118 \\@9__anon_0 = str("entry")
117 \\@unnamed$4 = str("entry")119 \\@unnamed$4 = str("entry")
118 \\@unnamed$5 = export(@unnamed$4, "entry")120 \\@unnamed$5 = export(@unnamed$4, "entry")
119 \\@unnamed$6 = fntype([], @void, cc=C)121 \\@11 = primitive(void_value)
120 \\@entry = fn(@unnamed$6, {122 \\@unnamed$7 = fntype([], @void, cc=C)
123 \\@entry = fn(@unnamed$7, {
121 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001124 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
122 \\ %1 = returnvoid() ; deaths=0b1000000000000000125 \\ %1 = returnvoid() ; deaths=0b1000000000000000
123 \\})126 \\})
124 \\@unnamed$8 = fntype([], @void, cc=C)127 \\@unnamed$9 = fntype([], @void, cc=C)
125 \\@a = fn(@unnamed$8, {128 \\@a = fn(@unnamed$9, {
126 \\ %0 = call(@b, [], modifier=auto) ; deaths=0b1000000000000001129 \\ %0 = call(@b, [], modifier=auto) ; deaths=0b1000000000000001
127 \\ %1 = returnvoid() ; deaths=0b1000000000000000130 \\ %1 = returnvoid() ; deaths=0b1000000000000000
128 \\})131 \\})
129 \\@unnamed$10 = fntype([], @void, cc=C)132 \\@unnamed$11 = fntype([], @void, cc=C)
130 \\@b = fn(@unnamed$10, {133 \\@b = fn(@unnamed$11, {
131 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001134 \\ %0 = call(@a, [], modifier=auto) ; deaths=0b1000000000000001
132 \\ %1 = returnvoid() ; deaths=0b1000000000000000135 \\ %1 = returnvoid() ; deaths=0b1000000000000000
133 \\})136 \\})
...@@ -192,8 +195,9 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -192,8 +195,9 @@ pub fn addCases(ctx: *TestContext) !void {
192 \\@9__anon_2 = str("entry")195 \\@9__anon_2 = str("entry")
193 \\@unnamed$4 = str("entry")196 \\@unnamed$4 = str("entry")
194 \\@unnamed$5 = export(@unnamed$4, "entry")197 \\@unnamed$5 = export(@unnamed$4, "entry")
195 \\@unnamed$6 = fntype([], @void, cc=C)198 \\@11 = primitive(void_value)
196 \\@entry = fn(@unnamed$6, {199 \\@unnamed$7 = fntype([], @void, cc=C)
200 \\@entry = fn(@unnamed$7, {
197 \\ %0 = returnvoid() ; deaths=0b1000000000000000201 \\ %0 = returnvoid() ; deaths=0b1000000000000000
198 \\})202 \\})
199 \\203 \\