diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-06-07 11:34:47 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-06-07 11:34:47 -0400 |
| commit | 76a3938d69e23a22ee2d5db971737c532ee8a6b0 (patch) | |
| tree | 175f87fd222edfefd2ec2136619ff1e3a2b165c8 /src/parser.cpp | |
| parent | b19b1c1298f755238e7b6a54e5482616d923f9a8 (diff) | |
| download | zig-76a3938d69e23a22ee2d5db971737c532ee8a6b0.tar.gz zig-76a3938d69e23a22ee2d5db971737c532ee8a6b0.zip | |
no-copy semantics for peer result function calls
```zig
export fn entry() void {
var c = true;
var x = if (c) foo() else bar();
}
```
```llvm
define void @entry() #2 !dbg !35 {
Entry:
%c = alloca i1, align 1
%x = alloca %Foo, align 4
store i1 true, i1* %c, align 1, !dbg !47
call void @llvm.dbg.declare(metadata i1* %c, metadata !39, metadata !DIExpression()), !dbg !48
%0 = load i1, i1* %c, align 1, !dbg !49
br i1 %0, label %Then, label %Else, !dbg !49
Then: ; preds = %Entry
call fastcc void @foo(%Foo* sret %x), !dbg !50
br label %EndIf, !dbg !51
Else: ; preds = %Entry
call fastcc void @bar(%Foo* sret %x), !dbg !52
br label %EndIf, !dbg !51
EndIf: ; preds = %Else, %Then
call void @llvm.dbg.declare(metadata %Foo* %x, metadata !42, metadata !DIExpression()), !dbg !53
ret void, !dbg !54
}
```
Diffstat (limited to 'src/parser.cpp')
0 files changed, 0 insertions, 0 deletions
