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 {
244244 }
245245
246246 {
247 var case = ctx.exeUsingLlvmBackend("address space pointer coercions", linux_x64);
247 var case = ctx.exeUsingLlvmBackend("invalid address space coercion", linux_x64);
248248 case.addError(
249249 \\fn entry(a: *addrspace(.gs) i32) *i32 {
250250 \\ return a;
......@@ -253,21 +253,30 @@ pub fn addCases(ctx: *TestContext) !void {
253253 , &[_][]const u8{
254254 ":2:12: error: expected *i32, found *addrspace(.gs) i32",
255255 });
256 }
256257
258 {
259 var case = ctx.exeUsingLlvmBackend("pointer keeps address space", linux_x64);
257260 case.compiles(
258261 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {
259262 \\ return a;
260263 \\}
261264 \\pub export fn main() void { _ = entry; }
262265 );
266 }
263267
268 {
269 var case = ctx.exeUsingLlvmBackend("pointer to explicit generic address space coerces to implicit pointer", linux_x64);
264270 case.compiles(
265271 \\fn entry(a: *addrspace(.generic) i32) *i32 {
266272 \\ return a;
267273 \\}
268274 \\pub export fn main() void { _ = entry; }
269275 );
276 }
270277
278 {
279 var case = ctx.exeUsingLlvmBackend("pointers with different address spaces", linux_x64);
271280 case.addError(
272281 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.fs) i32 {
273282 \\ return a;
......@@ -276,7 +285,10 @@ pub fn addCases(ctx: *TestContext) !void {
276285 , &[_][]const u8{
277286 ":2:12: error: expected *addrspace(.fs) i32, found *addrspace(.gs) i32",
278287 });
288 }
279289
290 {
291 var case = ctx.exeUsingLlvmBackend("pointers with different address spaces", linux_x64);
280292 case.addError(
281293 \\fn entry(a: ?*addrspace(.gs) i32) *i32 {
282294 \\ return a.?;
......@@ -285,7 +297,10 @@ pub fn addCases(ctx: *TestContext) !void {
285297 , &[_][]const u8{
286298 ":2:13: error: expected *i32, found *addrspace(.gs) i32",
287299 });
300 }
288301
302 {
303 var case = ctx.exeUsingLlvmBackend("invalid pointer keeps address space when taking address of dereference", linux_x64);
289304 case.addError(
290305 \\fn entry(a: *addrspace(.gs) i32) *i32 {
291306 \\ return &a.*;
......@@ -294,7 +309,10 @@ pub fn addCases(ctx: *TestContext) !void {
294309 , &[_][]const u8{
295310 ":2:12: error: expected *i32, found *addrspace(.gs) i32",
296311 });
312 }
297313
314 {
315 var case = ctx.exeUsingLlvmBackend("pointer keeps address space when taking address of dereference", linux_x64);
298316 case.compiles(
299317 \\fn entry(a: *addrspace(.gs) i32) *addrspace(.gs) i32 {
300318 \\ return &a.*;