aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-05-30 17:05:06 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-05-30 23:16:11 -0400
commita4aca787229e3b0b3dc992b747cc72a561c2078c (patch)
treeae7d210ad1ed2ab92c1147afdd88c8a3765c36f8 /src/codegen.cpp
parent5e1003bc81466b8ca0e3a3adb613bac8f34f2712 (diff)
downloadzig-a4aca787229e3b0b3dc992b747cc72a561c2078c.tar.gz
zig-a4aca787229e3b0b3dc992b747cc72a561c2078c.zip
no-copy semantics for if expr
```zig export fn entry() void { var c = true; var x = if (c) u8(4) else u32(10); } ``` ```llvm define void @entry() #2 !dbg !35 { Entry: %c = alloca i1, align 1 %x = alloca i32, align 4 store i1 true, i1* %c, align 1, !dbg !44 call void @llvm.dbg.declare(metadata i1* %c, metadata !39, metadata !DIExpression()), !dbg !45 %0 = load i1, i1* %c, align 1, !dbg !46 br i1 %0, label %Then, label %Else, !dbg !46 Then: ; preds = %Entry br label %EndIf, !dbg !47 Else: ; preds = %Entry br label %EndIf, !dbg !47 EndIf: ; preds = %Else, %Then %1 = phi i32 [ 4, %Then ], [ 10, %Else ], !dbg !47 store i32 %1, i32* %x, align 4, !dbg !47 call void @llvm.dbg.declare(metadata i32* %x, metadata !42, metadata !DIExpression()), !dbg !48 ret void, !dbg !49 } ```
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 2cb3584e68..ccbf911686 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -5606,10 +5606,9 @@ static LLVMValueRef ir_render_instruction(CodeGen *g, IrExecutable *executable,
case IrInstructionIdUndeclaredIdent:
case IrInstructionIdCallSrc:
case IrInstructionIdAllocaSrc:
- zig_unreachable();
-
+ case IrInstructionIdEndExpr:
case IrInstructionIdAllocaGen:
- return nullptr;
+ zig_unreachable();
case IrInstructionIdDeclVarGen:
return ir_render_decl_var(g, executable, (IrInstructionDeclVarGen *)instruction);