Fix for BZ38753 - https://bugs.llvm.org/show_bug.cgi?id=38753
Reassociate Expressions pass made no attempt to salvage or "fix up" debug info when dropping trivially delete-able instructions.
This was causing intrinsics that previously pointed to locations to have "dangling" locations that would be fixed up to empty metadata. Later passes would then remove these useless intrinsics. When we eventually reach the back-end, in LLC, LiveDebugValues would then propogate earlier intrinsics into as many blocks as possible. This would cause stale values to be seen in the debugger when debugging optmized code.
There's two test cases, one for undefs and another for a simple salvage case.
Thank you for your time reviewing this patch.