...
This commit is contained in:
@@ -1,12 +1,5 @@
|
|||||||
namespace main
|
namespace main
|
||||||
|
|
||||||
struct Human {
|
|
||||||
name: string
|
|
||||||
// print_age: func() = func() {
|
|
||||||
// c::puts("test3")
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
export func main(args: [][]u8): i64 {
|
export func main(args: [][]u8): i64 {
|
||||||
let x: []u8
|
let x: []u8
|
||||||
|
|
||||||
|
|||||||
@@ -694,7 +694,7 @@ public static class QBEGenerator
|
|||||||
{
|
{
|
||||||
AddressOfNode addressOf => GenerateAddressOf(addressOf),
|
AddressOfNode addressOf => GenerateAddressOf(addressOf),
|
||||||
AnonymousFuncNode anonymousFunc => GenerateAnonymousFunc(anonymousFunc),
|
AnonymousFuncNode anonymousFunc => GenerateAnonymousFunc(anonymousFunc),
|
||||||
ArrayIndexAccessNode arrayIndex => GenerateArrayIndexAccessNode(arrayIndex),
|
ArrayIndexAccessNode arrayIndex => GenerateArrayIndexAccess(arrayIndex),
|
||||||
ArrayInitializerNode arrayInitializer => GenerateArrayInitializer(arrayInitializer),
|
ArrayInitializerNode arrayInitializer => GenerateArrayInitializer(arrayInitializer),
|
||||||
BinaryExpressionNode binaryExpression => GenerateBinaryExpression(binaryExpression),
|
BinaryExpressionNode binaryExpression => GenerateBinaryExpression(binaryExpression),
|
||||||
DereferenceNode dereference => GenerateDereference(dereference),
|
DereferenceNode dereference => GenerateDereference(dereference),
|
||||||
@@ -738,11 +738,18 @@ public static class QBEGenerator
|
|||||||
return resultPointerName;
|
return resultPointerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GenerateArrayIndexAccessNode(ArrayIndexAccessNode arrayIndexAccess)
|
private static string GenerateArrayIndexAccess(ArrayIndexAccessNode arrayIndexAccess)
|
||||||
{
|
{
|
||||||
var pointerName = GenerateArrayIndexPointer(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;
|
return pointerName;
|
||||||
}
|
}
|
||||||
@@ -1222,7 +1229,7 @@ public static class QBEGenerator
|
|||||||
{
|
{
|
||||||
var pointer = GenerateMemberAccessPointer(memberAccess);
|
var pointer = GenerateMemberAccessPointer(memberAccess);
|
||||||
|
|
||||||
if (IsPointerType(memberAccess.Type))
|
if (SizeOf(memberAccess.Type) > 8)
|
||||||
{
|
{
|
||||||
return pointer;
|
return pointer;
|
||||||
}
|
}
|
||||||
@@ -1306,7 +1313,7 @@ public static class QBEGenerator
|
|||||||
|
|
||||||
private static void GenerateCopy(NubType type, string value, string destinationPointer)
|
private static void GenerateCopy(NubType type, string value, string destinationPointer)
|
||||||
{
|
{
|
||||||
if (IsPointerType(type))
|
if (SizeOf(type) > 8)
|
||||||
{
|
{
|
||||||
_builder.AppendLine($" blit {value}, {destinationPointer}, {SizeOf(type)}");
|
_builder.AppendLine($" blit {value}, {destinationPointer}, {SizeOf(type)}");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user