aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-03-12 00:08:52 -0400
committerAndrew Kelley <superjoe30@gmail.com>2018-03-12 00:08:52 -0400
commit49c3922037ef0b913466e707d85a4e085f6e9716 (patch)
tree58904795206468e87acd5ad3dc9c491111d076f6 /src
parentc18059a3ddcaec1bef18180ec797fe41baeac7f3 (diff)
downloadzig-49c3922037ef0b913466e707d85a4e085f6e9716.tar.gz
zig-49c3922037ef0b913466e707d85a4e085f6e9716.zip
fix incorrect setEvalBranchQuota compile error
closes #688
Diffstat (limited to 'src')
-rw-r--r--src/all_types.hpp1
-rw-r--r--src/ir.cpp3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/all_types.hpp b/src/all_types.hpp
index 7d480b5b4c..cfe70c96d2 100644
--- a/src/all_types.hpp
+++ b/src/all_types.hpp
@@ -49,6 +49,7 @@ struct IrExecutable {
size_t backward_branch_quota;
bool invalid;
bool is_inline;
+ bool is_generic_instantiation;
FnTableEntry *fn_entry;
Buf *c_import_buf;
AstNode *source_node;
diff --git a/src/ir.cpp b/src/ir.cpp
index 8fa6d5c44f..69b955aef7 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -12127,6 +12127,7 @@ static TypeTableEntry *ir_analyze_fn_call(IrAnalyze *ira, IrInstructionCall *cal
impl_fn->ir_executable.parent_exec = ira->new_irb.exec;
impl_fn->analyzed_executable.source_node = call_instruction->base.source_node;
impl_fn->analyzed_executable.parent_exec = ira->new_irb.exec;
+ impl_fn->analyzed_executable.is_generic_instantiation = true;
ira->codegen->fn_defs.append(impl_fn);
}
@@ -15234,7 +15235,7 @@ static TypeTableEntry *ir_analyze_instruction_type_id(IrAnalyze *ira,
static TypeTableEntry *ir_analyze_instruction_set_eval_branch_quota(IrAnalyze *ira,
IrInstructionSetEvalBranchQuota *instruction)
{
- if (ira->new_irb.exec->parent_exec != nullptr) {
+ if (ira->new_irb.exec->parent_exec != nullptr && !ira->new_irb.exec->is_generic_instantiation) {
ir_add_error(ira, &instruction->base,
buf_sprintf("@setEvalBranchQuota must be called from the top of the comptime stack"));
return ira->codegen->builtin_types.entry_invalid;