This commit is contained in:
nub31
2025-09-09 16:44:31 +02:00
parent 4e0aabd60a
commit 4265bc4ab0
2 changed files with 29 additions and 10 deletions

View File

@@ -1,18 +1,29 @@
// c
extern func puts(text: cstring)
struct Name
{
first: cstring
last: cstring
}
struct Human
{
name: Name
age: cstring
}
func main(args: []cstring): i64
{
let x: u32 = 23
let x: Human = struct {
name = struct {
first = "bob"
last = "the builder"
}
age = "23"
}
if x == 11 || false
{
puts("yes")
}
else
{
puts("no")
}
puts(x.name.last)
return 0
}

View File

@@ -1074,7 +1074,15 @@ public class QBEGenerator
private string EmitStructFieldAccess(StructFieldAccessNode structFieldAccess)
{
return EmitLoad(structFieldAccess.Type, EmitAddressOfStructFieldAccess(structFieldAccess));
var address = EmitAddressOfStructFieldAccess(structFieldAccess);
// Inline structs should not be loaded
if (structFieldAccess.Type is StructTypeNode)
{
return address;
}
return EmitLoad(structFieldAccess.Type, address);
}
private string EmitStructFuncCall(StructFuncCallNode structFuncCall)