]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/ssa/writebarrier.go
cmd/compile: don't ICE on unaligned offsets for pointer writes
[gostls13.git] / src / cmd / compile / internal / ssa / writebarrier.go
index 5df65bfaa3cd5effcea67d33ea210eda9b21332c..bd9e0b826829a8f39e8cb3fed4bb0ede837d0c13 100644 (file)
@@ -53,7 +53,10 @@ func mightContainHeapPointer(ptr *Value, size int64, mem *Value, zeroes map[ID]Z
        }
 
        ptrSize := ptr.Block.Func.Config.PtrSize
-       if off%ptrSize != 0 || size%ptrSize != 0 {
+       if off%ptrSize != 0 {
+               return true // see issue 61187
+       }
+       if size%ptrSize != 0 {
                ptr.Fatalf("unaligned pointer write")
        }
        if off < 0 || off+size > 64*ptrSize {
@@ -130,7 +133,7 @@ func needWBdst(ptr, mem *Value, zeroes map[ID]ZeroRegion) bool {
        }
        ptrSize := ptr.Block.Func.Config.PtrSize
        if off%ptrSize != 0 {
-               ptr.Fatalf("unaligned pointer write")
+               return true // see issue 61187
        }
        if off < 0 || off >= 64*ptrSize {
                // write goes off end of tracked offsets