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