diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2015-12-02 00:53:57 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2015-12-02 00:53:57 -0700 |
| commit | 370de7386ce811b6381c3ffcf5dd8efd2810da2b (patch) | |
| tree | 3d3025ca84b7d5a34c8f835842f3cd78f123891e /src/codegen.cpp | |
| parent | 08a2311efd8b388cd431feb6000741f4a62da613 (diff) | |
| download | zig-370de7386ce811b6381c3ffcf5dd8efd2810da2b.tar.gz zig-370de7386ce811b6381c3ffcf5dd8efd2810da2b.zip | |
fix parameter access and thus shared library example
Diffstat (limited to 'src/codegen.cpp')
| -rw-r--r-- | src/codegen.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp index d442856692..45bbfeb310 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -105,19 +105,13 @@ static LLVMValueRef find_or_create_string(CodeGen *g, Buf *str) { static LLVMValueRef get_variable_value(CodeGen *g, Buf *name) { assert(g->cur_fn->proto_node->type == NodeTypeFnProto); - int param_count = g->cur_fn->proto_node->data.fn_proto.params.length; - for (int i = 0; i < param_count; i += 1) { - AstNode *param_decl_node = g->cur_fn->proto_node->data.fn_proto.params.at(i); - assert(param_decl_node->type == NodeTypeParamDecl); - Buf *param_name = ¶m_decl_node->data.param_decl.name; - if (buf_eql_buf(name, param_name)) { - CodeGenNode *codegen_node = g->cur_fn->fn_def_node->codegen_node; - assert(codegen_node); - FnDefNode *codegen_fn_def = &codegen_node->data.fn_def_node; - return codegen_fn_def->params[i]; - } - } - zig_unreachable(); + + SymbolTableEntry *symbol_entry = g->cur_fn->symbol_table.get(name); + + CodeGenNode *codegen_node = g->cur_fn->fn_def_node->codegen_node; + assert(codegen_node); + FnDefNode *codegen_fn_def = &codegen_node->data.fn_def_node; + return codegen_fn_def->params[symbol_entry->param_index]; } static TypeTableEntry *get_expr_type(AstNode *node) { |
