Following the merge of D91722, a case has been found where a large number of excessively large DIArgLists were created as a result of salvaging, effectively freezing the compiler. In order to prevent such extreme cases from affecting performance, this patch arbitrarily constrains DIArgLists to containing 16 arguments - any attempt to salvage them further will result in an undef dbg.value.
Although this patch is straightforward and should help deal with the prior performance issue, there is a further step that can be taken that may also help, which would be to reduce the size of undef dbg.values. Currently when we set a dbg.value undef, we just replace the lost value with an UndefValue of equal type, but we could further reduce the size of these dbg.values by removing the contents of the DIArgList and DIExpression, with the exception of any DIExpression operators that still have meaning (such as DW_OP_LLVM_fragment). I can make this into a separate patch, or fold it into this one - any thoughts?