Remove use of find_len and len_from_list. Rename lenof to lengthof

This commit is contained in:
Christoffer Lerno
2025-09-06 18:35:03 +02:00
parent 3eb8f68ded
commit 9f55a74d2e
18 changed files with 46 additions and 61 deletions

View File

@@ -12,7 +12,7 @@ macro quicksort(list, cmp = null)
{
var $Type = $typeof(list);
var $CmpType = $typeof(cmp);
usz len = sort::len_from_list(list);
usz len = lengthof(list);
test_generic::sort{$Type, $CmpType}(list, 0, (isz)len - 1, cmp);
}
@@ -70,7 +70,6 @@ entry:
%tc = alloca %"int[]", align 8
%list = alloca %"int[]", align 8
%len = alloca i64, align 8
%list9 = alloca %"int[]", align 8
store %"int[]" zeroinitializer, ptr %literal, align 8
%ptradd = getelementptr inbounds i8, ptr %literal, i64 16
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %literal1, ptr align 4 @.__const, i32 8, i1 false)
@@ -111,15 +110,14 @@ loop.body: ; preds = %loop.cond
%ptroffset = getelementptr inbounds [16 x i8], ptr %12, i64 %13
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %tc, ptr align 8 %ptroffset, i32 16, i1 false)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %list, ptr align 8 %tc, i32 16, i1 false)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %list9, ptr align 8 %list, i32 16, i1 false)
%ptradd10 = getelementptr inbounds i8, ptr %list9, i64 8
%14 = load i64, ptr %ptradd10, align 8
%ptradd9 = getelementptr inbounds i8, ptr %list, i64 8
%14 = load i64, ptr %ptradd9, align 8
store i64 %14, ptr %len, align 8
%15 = load i64, ptr %len, align 8
%sub = sub i64 %15, 1
%lo = load ptr, ptr %list, align 8
%ptradd11 = getelementptr inbounds i8, ptr %list, i64 8
%hi = load i64, ptr %ptradd11, align 8
%ptradd10 = getelementptr inbounds i8, ptr %list, i64 8
%hi = load i64, ptr %ptradd10, align 8
call void @"test_generic$sa$int$fn$int$int$$int$$.sort"(ptr %lo, i64 %hi, i64 0, i64 %sub, ptr @sort_test.cmp_int_value)
%16 = load i64, ptr %.anon, align 8
%addnuw = add nuw i64 %16, 1
@@ -130,7 +128,6 @@ loop.exit: ; preds = %loop.cond
ret void
}
; Function Attrs:
define void @sort_test.quicksort_with_value2() #0 {
entry:
%tcases = alloca %"int[][]", align 8
@@ -143,7 +140,6 @@ entry:
%tc = alloca %"int[]", align 8
%list = alloca %"int[]", align 8
%len = alloca i64, align 8
%list9 = alloca %"int[]", align 8
store %"int[]" zeroinitializer, ptr %literal, align 8
%ptradd = getelementptr inbounds i8, ptr %literal, i64 16
call void @llvm.memcpy.p0.p0.i32(ptr align 4 %literal1, ptr align 4 @.__const.4, i32 8, i1 false)
@@ -184,15 +180,14 @@ loop.body: ; preds = %loop.cond
%ptroffset = getelementptr inbounds [16 x i8], ptr %12, i64 %13
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %tc, ptr align 8 %ptroffset, i32 16, i1 false)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %list, ptr align 8 %tc, i32 16, i1 false)
call void @llvm.memcpy.p0.p0.i32(ptr align 8 %list9, ptr align 8 %list, i32 16, i1 false)
%ptradd10 = getelementptr inbounds i8, ptr %list9, i64 8
%14 = load i64, ptr %ptradd10, align 8
%ptradd9 = getelementptr inbounds i8, ptr %list, i64 8
%14 = load i64, ptr %ptradd9, align 8
store i64 %14, ptr %len, align 8
%15 = load i64, ptr %len, align 8
%sub = sub i64 %15, 1
%lo = load ptr, ptr %list, align 8
%ptradd11 = getelementptr inbounds i8, ptr %list, i64 8
%hi = load i64, ptr %ptradd11, align 8
%ptradd10 = getelementptr inbounds i8, ptr %list, i64 8
%hi = load i64, ptr %ptradd10, align 8
call void @"test_generic$sa$int$fn$int$int$$int$$.sort"(ptr %lo, i64 %hi, i64 0, i64 %sub, ptr @sort_test.cmp_int_value2)
%16 = load i64, ptr %.anon, align 8
%addnuw = add nuw i64 %16, 1

View File

@@ -8,13 +8,13 @@ fn void lenof_test() @test
l.push(123);
l.push(222);
l.push(111);
test::eq(lenof(l), 3);
test::eq(lengthof(l), 3);
int[] x = { 1, 2 };
test::eq(lenof(x), 2);
test::eq(lengthof(x), 2);
l.push(111);
test::eq(lenof(l), 4);
assert(!$defined(lenof(1)));
assert($defined(lenof(x)));
test::eq(lengthof(l), 4);
assert(!$defined(lengthof(1)));
assert($defined(lengthof(x)));
int* zz;
assert(!$defined(lenof(zz)));
assert(!$defined(lengthof(zz)));
}

View File

@@ -120,7 +120,7 @@ fn int[] to_ints(TestL l) => @map(tmem, l.array_view(), fn int(Test x) => x.test
import std::core::array @public;
macro @map(Allocator alloc, array, operation)
{
var res = allocator::alloc_array(alloc, $typeof(operation).returns, array::find_len(array));
var res = allocator::alloc_array(alloc, $typeof(operation).returns, lengthof(array));
foreach (i, val : array) res[i] = operation(val);
return res;
}