compiler: insert nil checks when storing to a pointer

This does increase code size, but it is necessary to avoid undefined
behavior.
This commit is contained in:
Ayke van Laethem
2019-05-03 22:09:22 +02:00
committed by Ron Evans
parent 371c468e8e
commit 3c2639ad55
+1
View File
@@ -1054,6 +1054,7 @@ func (c *Compiler) parseInstr(frame *Frame, instr ssa.Instruction) {
case *ssa.Store:
llvmAddr := c.getValue(frame, instr.Addr)
llvmVal := c.getValue(frame, instr.Val)
c.emitNilCheck(frame, llvmAddr, "store")
if c.targetData.TypeAllocSize(llvmVal.Type()) == 0 {
// nothing to store
return