diff --git a/src/all_types.hpp b/src/all_types.hpp index 993a693d8821894f8fa6d6be4fb6383c82cf51b8..e9515a69cc1e0b5da8e91a8e79ee91037d4498a8 100644 --- a/src/all_types.hpp +++ b/src/all_types.hpp @@ -2286,6 +2286,7 @@ struct ZigVar { bool is_thread_local; bool is_comptime_memoized; bool is_comptime_memoized_value; + bool did_the_decl_codegen; }; struct ErrorTableEntry { diff --git a/src/codegen.cpp b/src/codegen.cpp index ef43ebd575e72cd1955c248d6d04b9217a0ce52b..2eb5e450835e5f6352698828cbc1c00cb362f7bc 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -3505,6 +3505,7 @@ static void render_decl_var(CodeGen *g, ZigVar *var) { static LLVMValueRef ir_render_decl_var(CodeGen *g, IrExecutableGen *executable, IrInstGenDeclVar *instruction) { instruction->var->ptr_instruction = instruction->var_ptr; + instruction->var->did_the_decl_codegen = true; render_decl_var(g, instruction->var); return nullptr; } @@ -3973,7 +3974,7 @@ static void render_async_var_decls(CodeGen *g, Scope *scope) { return; case ScopeIdVarDecl: { ZigVar *var = reinterpret_cast(scope)->var; - if (var->ptr_instruction != nullptr) { + if (var->did_the_decl_codegen) { render_decl_var(g, var); } // fallthrough