# no-copy semantics for if expr · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/a4aca787229e3b0b3dc992b747cc72a561c2078c)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: a4aca787229e3b0b3dc992b747cc72a561c2078c

Requested commit: a4aca787229e3b0b3dc992b747cc72a561c2078c

Commit: a4aca787229e3b0b3dc992b747cc72a561c2078c

Tree: ae7d210ad1ed2ab92c1147afdd88c8a3765c36f8

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

````
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
}
```

````

## Parents

- [5e1003bc81466b8ca0e3a3adb613bac8f34f2712](https://git.cafe/gitcafe/zig/commit/5e1003bc81466b8ca0e3a3adb613bac8f34f2712?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/a4aca787229e3b0b3dc992b747cc72a561c2078c?format=markdown)
