aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/codegen.cpp
diff options
context:
space:
mode:
authorgingerBill <ginger.bill.22@gmail.com>2016-08-19 23:35:09 +0100
committergingerBill <ginger.bill.22@gmail.com>2016-08-19 23:35:09 +0100
commit680274b6f1f1e36e27c94b4e60895338d413c84a (patch)
tree1d68b9062ab743950878b41fe2cb6f2e81157462 /src/codegen/codegen.cpp
parent745237459abb3fa91405fdba3895bd9f810bc9d2 (diff)
Implicit Context and #thread_local
Diffstat (limited to 'src/codegen/codegen.cpp')
-rw-r--r--src/codegen/codegen.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/codegen/codegen.cpp b/src/codegen/codegen.cpp
index 34933b2a9..795d43a07 100644
--- a/src/codegen/codegen.cpp
+++ b/src/codegen/codegen.cpp
@@ -77,8 +77,10 @@ void ssa_gen_code(ssaGen *s) {
} break;
case Entity_Variable: {
- // TODO(bill): global runtime initialization
ssaValue *g = ssa_make_value_global(a, e, NULL);
+ if (decl->var_decl_tags & VarDeclTag_thread_local) {
+ g->Global.is_thread_local = true;
+ }
ssaGlobalVariable var = {};
var.var = g;
var.decl = decl;
@@ -95,7 +97,7 @@ void ssa_gen_code(ssaGen *s) {
name = pd->foreign_name;
}
ssaValue *p = ssa_make_value_procedure(a, m, e->type, decl->type_expr, body, name);
- p->proc.tags = pd->tags;
+ p->Proc.tags = pd->tags;
map_set(&m->values, hash_pointer(e), p);
map_set(&m->members, hash_string(name), p);
@@ -127,7 +129,7 @@ void ssa_gen_code(ssaGen *s) {
map_set(&m->values, hash_pointer(e), p);
map_set(&m->members, hash_string(name), p);
- ssaProcedure *proc = &p->proc;
+ ssaProcedure *proc = &p->Proc;
proc->tags = ProcTag_no_inline; // TODO(bill): is no_inline a good idea?
ssa_begin_procedure_body(proc);