[Work in progress, not really up for review]
Here's a patch that makes LiveDebugValues recognise different variable fragments as having different locations, allowing it to propagate fragments independently (see: the regression test).
There's an obvious flaw with this : *overlapping* fragments will be recognised as being different fragments, and will get propagated, leading to unsound locations being extended. What's not clear to me is whether this is best dealt with at a different layer, which I'll write up in the bug report at https://bugs.llvm.org/show_bug.cgi?id=41979