diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-05-31 01:08:16 -0400 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2019-05-31 01:08:16 -0400 |
| commit | 461382ae941e235ad75a6b3d00e05e5369baa98a (patch) | |
| tree | b449441093bf6c26caa97959c2d449a137b0cc23 /src/analyze.cpp | |
| parent | 8aba0643a55e4a67c0e7e01c1946900164514f4c (diff) | |
| download | zig-461382ae941e235ad75a6b3d00e05e5369baa98a.tar.gz zig-461382ae941e235ad75a6b3d00e05e5369baa98a.zip | |
no-copy semantics for function call init var and literal
```zig
export fn entry() void {
var x = foo();
}
const Foo = struct {
x: i32,
};
fn foo() Foo {
return Foo{
.x = 1234,
};
}
```
```llvm
define void @entry() #2 !dbg !35 {
Entry:
%x = alloca %Foo, align 4
call fastcc void @foo(%Foo* sret %x), !dbg !45
call void @llvm.dbg.declare(metadata %Foo* %x, metadata !39, metadata !DIExpression()), !dbg !46
ret void, !dbg !47
}
define internal fastcc void @foo(%Foo* nonnull sret) unnamed_addr #2 !dbg !48 {
Entry:
%1 = bitcast %Foo* %0 to i8*, !dbg !52
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %1, i8* align 4 bitcast (%Foo* @0 to i8*), i64 4, i1 false), !dbg !52
ret void, !dbg !52
}
```
Diffstat (limited to 'src/analyze.cpp')
0 files changed, 0 insertions, 0 deletions
