diff options
| author | gingerBill <ginger.bill.22@gmail.com> | 2016-08-19 23:35:09 +0100 |
|---|---|---|
| committer | gingerBill <ginger.bill.22@gmail.com> | 2016-08-19 23:35:09 +0100 |
| commit | 680274b6f1f1e36e27c94b4e60895338d413c84a (patch) | |
| tree | 1d68b9062ab743950878b41fe2cb6f2e81157462 /src/codegen/codegen.cpp | |
| parent | 745237459abb3fa91405fdba3895bd9f810bc9d2 (diff) | |
Implicit Context and #thread_local
Diffstat (limited to 'src/codegen/codegen.cpp')
| -rw-r--r-- | src/codegen/codegen.cpp | 8 |
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); |