Skip to content

Commit ff943d9

Browse files
committed
copy elision: implicit cast optional wrap when payload is integer
```zig export fn entry() void { var a: i32 = 1234; var b: ?i32 = a; } ``` ```llvm define void @entry() #2 !dbg !41 { Entry: %a = alloca i32, align 4 %b = alloca { i32, i1 }, align 4 store i32 1234, i32* %a, align 4, !dbg !55 call void @llvm.dbg.declare(metadata i32* %a, metadata !45, metadata !DIExpression()), !dbg !55 %0 = load i32, i32* %a, align 4, !dbg !56 %1 = getelementptr inbounds { i32, i1 }, { i32, i1 }* %b, i32 0, i32 1, !dbg !57 store i1 true, i1* %1, align 1, !dbg !57 %2 = getelementptr inbounds { i32, i1 }, { i32, i1 }* %b, i32 0, i32 0, !dbg !57 store i32 %0, i32* %2, align 4, !dbg !57 call void @llvm.dbg.declare(metadata { i32, i1 }* %b, metadata !48, metadata !DIExpression()), !dbg !57 ret void, !dbg !58 } ```
1 parent 7f3c7f3 commit ff943d9

File tree

3 files changed

+48
-71
lines changed

3 files changed

+48
-71
lines changed

src/all_types.hpp

-1
Original file line numberDiff line numberDiff line change
@@ -2338,7 +2338,6 @@ struct IrInstructionLoadPtr {
23382338
IrInstruction base;
23392339

23402340
IrInstruction *ptr;
2341-
IrInstruction *result_loc;
23422341
};
23432342

23442343
struct IrInstructionStorePtr {

0 commit comments

Comments
 (0)