...
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user