Files
swift-mirror/include/swift/SIL/FieldSensitivePrunedLiveness.h
Michael Gottesman d7d7ab6ae2 [move-only] Make sure that we mask out liveness bits and use |= when merging successors
Both of these can cause us to insert destroy_addr in the wrong locations.

1. The first causes us to insert destroys for parts of values that are not
actually on the boundary since we didn't use our mask and instead used all of
the liveness information.

2. We were merging successor information using '&=' instead of '|=. This caused
a problem if we had multiple regions for the same successor. In such a case, we
would not have anything in common for the regions causing us to not have any
bits in common, resulting in us inserting too many destroy_addr instead of
skipping as we were supposed to.

rdar://112434492
2023-07-17 16:10:43 -07:00

50 KiB