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

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)}");
}