shortenAssignment inserts dbg.assigns with fragments describing the dead part of a shortened store after each dbg.assign linked to the store.
Without this patch it doesn't take into account that the dead part of a shortened store may be outside the bounds of a variable of a linked dbg.assign. It also doesn't correctly account for a non-zero offset in the address modifying DIExpression of the dbg.assign (which is possible for fragments now even though whole variables currently cannot have a non-zero offset in their alloca).
Fix this by moving the dead slice into variable-space and performing an intersect of that adjusted slice with the existing fragment.
This fixes a verifier error reported when building fuchsia with assignment tracking enabled: https://ci.chromium.org/ui/p/fuchsia/builders/ci/clang_toolchain.ci.core.x64-release/b8784000953022145169/overview
Is there a meaningful distinction between a zero-sized fragment and returning false? (just curious)