zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit b3ff28189ce8f28abf077dcf343d0d95bf5645c3 (tree)
parent a52ede6494d44865fcf05591eaf5715d8bd1dc4a
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Sat, 26 Nov 2016 23:24:43 -0500

IR: fix crash when duplicate label error

Diffstat:
Msrc/ir.cpp | 9+++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/ir.cpp b/src/ir.cpp @@ -2640,15 +2640,16 @@ IrInstruction *ir_gen(CodeGen *codegen, AstNode *node, BlockContext *scope, IrEx IrInstruction *result = ir_gen_node_extra(irb, node, scope, LValPurposeNone); assert(result); + if (irb->exec->invalid) + return codegen->invalid_instruction; IrInstruction *return_instruction = ir_build_return(irb, result->source_node, result); assert(return_instruction); - if (result == codegen->invalid_instruction) - return codegen->invalid_instruction; - - if (!ir_goto_pass2(irb)) + if (!ir_goto_pass2(irb)) { + irb->exec->invalid = true; return codegen->invalid_instruction; + } return return_instruction; }