Split from another patch, which this patch should precede: https://reviews.llvm.org/D61184
This patch fixes an issue which was exposed in the initial merge of the patch in the review linked above, in which:
- Debug expressions containing shift operators could be split across multiple registers during instruction selection, resulting in incorrect debug information as the shifted bits will not carry across these registers.
- When a debug expression is split into fragments during instruction selection and the expression cannot be made into a valid fragment expression then no DBG_VALUE instruction is produced; this patch correctly adds an undef DBG_VALUE instruction, preventing the debug info from becoming outdated.
This is a good change.