This commit is contained in:
nub31
2025-06-15 01:17:25 +02:00
parent 6d3c241368
commit 7c05870e24
2 changed files with 12 additions and 12 deletions

View File

@@ -1,12 +1,5 @@
namespace main
struct Human {
name: string
// print_age: func() = func() {
// c::puts("test3")
// }
}
export func main(args: [][]u8): i64 {
let x: []u8

View File

@@ -694,7 +694,7 @@ public static class QBEGenerator
{
AddressOfNode addressOf => GenerateAddressOf(addressOf),
AnonymousFuncNode anonymousFunc => GenerateAnonymousFunc(anonymousFunc),
ArrayIndexAccessNode arrayIndex => GenerateArrayIndexAccessNode(arrayIndex),
ArrayIndexAccessNode arrayIndex => GenerateArrayIndexAccess(arrayIndex),
ArrayInitializerNode arrayInitializer => GenerateArrayInitializer(arrayInitializer),
BinaryExpressionNode binaryExpression => GenerateBinaryExpression(binaryExpression),
DereferenceNode dereference => GenerateDereference(dereference),
@@ -738,11 +738,18 @@ public static class QBEGenerator
return resultPointerName;
}
private static string GenerateArrayIndexAccessNode(ArrayIndexAccessNode arrayIndexAccess)
private static string GenerateArrayIndexAccess(ArrayIndexAccessNode arrayIndexAccess)
{
var pointerName = GenerateArrayIndexPointer(arrayIndexAccess);
if (IsPointerType(arrayIndexAccess.Type))
var elementType = arrayIndexAccess.Array.Type switch
{
NubArrayType arrayType => arrayType.ElementType,
NubFixedArrayType fixedArrayType => fixedArrayType.ElementType,
_ => throw new ArgumentOutOfRangeException()
};
if (SizeOf(elementType) > 8)
{
return pointerName;
}
@@ -1222,7 +1229,7 @@ public static class QBEGenerator
{
var pointer = GenerateMemberAccessPointer(memberAccess);
if (IsPointerType(memberAccess.Type))
if (SizeOf(memberAccess.Type) > 8)
{
return pointer;
}
@@ -1306,7 +1313,7 @@ public static class QBEGenerator
private static void GenerateCopy(NubType type, string value, string destinationPointer)
{
if (IsPointerType(type))
if (SizeOf(type) > 8)
{
_builder.AppendLine($" blit {value}, {destinationPointer}, {SizeOf(type)}");
}