Empty struct literal values are initialized to zero

This commit is contained in:
Sasha Koshka 2023-12-23 17:25:27 -05:00
parent cd688c91af
commit 06df727f7f
1 changed files with 9 additions and 2 deletions

View File

@ -204,8 +204,15 @@ func (this *generator) generateLiteralStructLoc (literal *entity.LiteralStruct)
structure := this.blockManager.newAllocaFront(irType)
for index, member := range literal.Members {
irMember, err := this.generateExpression(member.Value)
if err != nil { return nil, err }
var irMember llvm.Value
if value, ok := literal.Members[member.Name] {
irMember, err = this.generateExpression(value)
if err != nil { return nil, err }
} else {
irMemberType, err := this.generateType(member.Type())
if err != nil { return nil, err }
irMember = llvm.NewZeroInitializer(irMemberType)
}
elementPointer := this.blockManager.NewGetElementPtr (
irType, structure,