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 // c
extern func puts(text: cstring) extern func puts(text: cstring)
struct Name
{
first: cstring
last: cstring
}
struct Human
{
name: Name
age: cstring
}
func main(args: []cstring): i64 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(x.name.last)
{
puts("yes")
}
else
{
puts("no")
}
return 0 return 0
} }

View File

@@ -1074,7 +1074,15 @@ public class QBEGenerator
private string EmitStructFieldAccess(StructFieldAccessNode structFieldAccess) 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) private string EmitStructFuncCall(StructFuncCallNode structFuncCall)