c362895116
```zig export fn entry() void { var buf: [10]u8 = undefined; const slice1: []const u8 = &buf; const slice2 = buf[0..]; } ``` ```llvm define void @entry() #2 !dbg !35 { Entry: %buf = alloca [10 x i8], align 1 %slice1 = alloca %"[]u8", align 8 %slice2 = alloca %"[]u8", align 8 %0 = bitcast [10 x i8]* %buf to i8*, !dbg !46 call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 -86, i64 10, i1 false), !dbg !46 call void @llvm.dbg.declare(metadata [10 x i8]* %buf, metadata !39, metadata !DIExpression()), !dbg !46 %1 = getelementptr inbounds %"[]u8", %"[]u8"* %slice1, i32 0, i32 0, !dbg !47 %2 = getelementptr inbounds [10 x i8], [10 x i8]* %buf, i64 0, i64 0, !dbg !47 store i8* %2, i8** %1, align 8, !dbg !47 %3 = getelementptr inbounds %"[]u8", %"[]u8"* %slice1, i32 0, i32 1, !dbg !47 store i64 10, i64* %3, align 8, !dbg !47 call void @llvm.dbg.declare(metadata %"[]u8"* %slice1, metadata !44, metadata !DIExpression()), !dbg !48 %4 = getelementptr inbounds %"[]u8", %"[]u8"* %slice2, i32 0, i32 0, !dbg !49 %5 = getelementptr inbounds [10 x i8], [10 x i8]* %buf, i64 0, i64 0, !dbg !49 store i8* %5, i8** %4, align 8, !dbg !49 %6 = getelementptr inbounds %"[]u8", %"[]u8"* %slice2, i32 0, i32 1, !dbg !49 store i64 10, i64* %6, align 8, !dbg !49 call void @llvm.dbg.declare(metadata %"[]u8"* %slice2, metadata !45, metadata !DIExpression()), !dbg !50 ret void, !dbg !51 } ```
23 lines
682 B
Plaintext
23 lines
682 B
Plaintext
Scratch pad for stuff to do before merging master
|
|
=================================================
|
|
|
|
look at all the ir_gen_node ir_gen_node_extra calls and make sure result locations are properly propagated
|
|
return ir_gen_comptime(irb, scope, node, lval);
|
|
|
|
migrate all the alloca_list to alloca_gen_list
|
|
|
|
inferred comptime
|
|
|
|
|
|
if (lval == LValNone) {
|
|
if (result_loc->id == ResultLocIdNone)
|
|
return value;
|
|
}
|
|
|
|
assert(lval == LValPtr);
|
|
|
|
// We needed a pointer to a value, but we got a value. So we create
|
|
// an instruction which just makes a pointer of it.
|
|
return ir_build_ref(irb, scope, value->source_node, value, false, false);
|
|
|