authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-09-01 17:04:42+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2021-09-20 02:29:04+02:00
log90a945b38c44c673e230feb8a6b124f5c8f977a1
treec11519509c93f3e07ab9d03031d7e621b84f1d95
parent7956eee1ab126cb6657f7b87e3fcf86794c141b0

Address Spaces: Split out stage2 address llvm tests to individual cases

This previously caused a test case to crash due to lingering llvm state.

1 files changed, 19 insertions(+), 1 deletions(-)

test/stage2/llvm.zig+19-1
...@@ -244,7 +244,7 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -244,7 +244,7 @@ pub fn addCases(ctx: *TestContext) !void {
244 }244 }
245245
246 {246 {
247 var case = ctx.exeUsingLlvmBackend("address space pointer coercions", linux_x64);247 var case = ctx.exeUsingLlvmBackend("invalid address space coercion", linux_x64);
248 case.addError(248 case.addError(
249 \\fn entry(a: *addrspace(.gs) i32) *i32 {249 \\fn entry(a: *addrspace(.gs) i32) *i32 {
250 \\ return a;250 \\ return a;
...@@ -253,21 +253,30 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -253,21 +253,30 @@ pub fn addCases(ctx: *TestContext) !void {
253 , &[_][]const u8{253 , &[_][]const u8{
254 ":2:12: error: expected *i32, found *addrspace(.gs) i32",254 ":2:12: error: expected *i32, found *addrspace(.gs) i32",
255 });255 });
256 }
256257
258 {
259 var case = ctx.exeUsingLlvmBackend("pointer keeps address space", linux_x64);
257 case.compiles(260 case.compiles(
258 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {261 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {
259 \\ return a;262 \\ return a;
260 \\}263 \\}
261 \\pub export fn main() void { _ = entry; }264 \\pub export fn main() void { _ = entry; }
262 );265 );
266 }
263267
268 {
269 var case = ctx.exeUsingLlvmBackend("pointer to explicit generic address space coerces to implicit pointer", linux_x64);
264 case.compiles(270 case.compiles(
265 \\fn entry(a: *addrspace(.generic) i32) *i32 {271 \\fn entry(a: *addrspace(.generic) i32) *i32 {
266 \\ return a;272 \\ return a;
267 \\}273 \\}
268 \\pub export fn main() void { _ = entry; }274 \\pub export fn main() void { _ = entry; }
269 );275 );
276 }
270277
278 {
279 var case = ctx.exeUsingLlvmBackend("pointers with different address spaces", linux_x64);
271 case.addError(280 case.addError(
272 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 {281 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 {
273 \\ return a;282 \\ return a;
...@@ -276,7 +285,10 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -276,7 +285,10 @@ pub fn addCases(ctx: *TestContext) !void {
276 , &[_][]const u8{285 , &[_][]const u8{
277 ":2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32",286 ":2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32",
278 });287 });
288 }
279289
290 {
291 var case = ctx.exeUsingLlvmBackend("pointers with different address spaces", linux_x64);
280 case.addError(292 case.addError(
281 \\fn entry(a: ?*addrspace(.gs) i32) *i32 {293 \\fn entry(a: ?*addrspace(.gs) i32) *i32 {
282 \\ return a.?;294 \\ return a.?;
...@@ -285,7 +297,10 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -285,7 +297,10 @@ pub fn addCases(ctx: *TestContext) !void {
285 , &[_][]const u8{297 , &[_][]const u8{
286 ":2:13: error: expected *i32, found *addrspace(.gs) i32",298 ":2:13: error: expected *i32, found *addrspace(.gs) i32",
287 });299 });
300 }
288301
302 {
303 var case = ctx.exeUsingLlvmBackend("invalid pointer keeps address space when taking address of dereference", linux_x64);
289 case.addError(304 case.addError(
290 \\fn entry(a: *addrspace(.gs) i32) *i32 {305 \\fn entry(a: *addrspace(.gs) i32) *i32 {
291 \\ return &a.*;306 \\ return &a.*;
...@@ -294,7 +309,10 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -294,7 +309,10 @@ pub fn addCases(ctx: *TestContext) !void {
294 , &[_][]const u8{309 , &[_][]const u8{
295 ":2:12: error: expected *i32, found *addrspace(.gs) i32",310 ":2:12: error: expected *i32, found *addrspace(.gs) i32",
296 });311 });
312 }
297313
314 {
315 var case = ctx.exeUsingLlvmBackend("pointer keeps address space when taking address of dereference", linux_x64);
298 case.compiles(316 case.compiles(
299 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {317 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {
300 \\ return &a.*;318 \\ return &a.*;