aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Voetter <robin@voetter.nl>2021-09-02 14:49:24 +0200
committerRobin Voetter <robin@voetter.nl>2021-09-20 02:29:03 +0200
commitcfbe9a6f61c98cb1b18e18aa6a4acf7785590953 (patch)
tree2727428c4159e89f50d853d3cea17d7ca827d38c /src
parent805e1bffbdcab84717356fb1a7b375369407d9c2 (diff)
downloadzig-cfbe9a6f61c98cb1b18e18aa6a4acf7785590953.tar.gz
zig-cfbe9a6f61c98cb1b18e18aa6a4acf7785590953.zip
Address spaces: Forbid addrspace and linksection for local variables
Diffstat (limited to 'src')
-rw-r--r--src/AstGen.zig9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index 443834485f..cffc626a1e 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -2377,6 +2377,7 @@ fn varDecl(
const gpa = astgen.gpa;
const tree = astgen.tree;
const token_tags = tree.tokens.items(.tag);
+ const main_tokens = tree.nodes.items(.main_token);
const name_token = var_decl.ast.mut_token + 1;
const ident_name_raw = tree.tokenSlice(name_token);
@@ -2391,6 +2392,14 @@ fn varDecl(
return astgen.failNode(node, "variables must be initialized", .{});
}
+ if (var_decl.ast.addrspace_node != 0) {
+ return astgen.failTok(main_tokens[var_decl.ast.addrspace_node], "cannot set address space of local variable '{s}'", .{ ident_name_raw });
+ }
+
+ if (var_decl.ast.section_node != 0) {
+ return astgen.failTok(main_tokens[var_decl.ast.section_node], "cannot set section of local variable '{s}'", .{ ident_name_raw });
+ }
+
const align_inst: Zir.Inst.Ref = if (var_decl.ast.align_node != 0)
try expr(gz, scope, align_rl, var_decl.ast.align_node)
else