# hook up peer result locs to catch · gitcafe/zig

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

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

Visibility: public

Requested revision: b1efba0c7011f8f5acb31ca3c384c3d2750ac669

Requested commit: b1efba0c7011f8f5acb31ca3c384c3d2750ac669

Commit: b1efba0c7011f8f5acb31ca3c384c3d2750ac669

Tree: a0ff5b9906d743508b950a3f91d2509708a2e269

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

````
hook up peer result locs to catch

```zig
export fn entry() void {
    var x = crap() catch bar();
}
```

```llvm
define void @entry() #2 !dbg !40 {
Entry:
  %0 = alloca { i16, %Foo }, align 4
  %x = alloca %Foo, align 4
  call fastcc void @crap({ i16, %Foo }* sret %0), !dbg !50
  %1 = getelementptr inbounds { i16, %Foo }, { i16, %Foo }* %0, i32 0, i32 0, !dbg !51
  %2 = load i16, i16* %1, align 2, !dbg !51
  %3 = icmp ne i16 %2, 0, !dbg !51
  br i1 %3, label %UnwrapErrError, label %UnwrapErrOk, !dbg !51

UnwrapErrError:                                   ; preds = %Entry
  call fastcc void @bar(%Foo* sret %x), !dbg !52
  br label %UnwrapErrEnd, !dbg !51

UnwrapErrOk:                                      ; preds = %Entry
  %4 = getelementptr inbounds { i16, %Foo }, { i16, %Foo }* %0, i32 0, i32 1, !dbg !51
  %5 = bitcast %Foo* %4 to i8*, !dbg !51
  %6 = bitcast %Foo* %x to i8*, !dbg !51
  call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %6, i8* align 4 %5, i64 4, i1 false), !dbg !51
  br label %UnwrapErrEnd, !dbg !51

UnwrapErrEnd:                                     ; preds = %UnwrapErrOk, %UnwrapErrError
  ret void, !dbg !53
}
```

````

## Parents

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

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