Fixes a bug observed here: https://reviews.llvm.org/rGc72705678c47#inline-6620
Currently when salvaging a GEP instruction, we calculate variable offsets (such as %offset in getelementptr inbounds %struct.S, %struct.S* %ptr, i64 %offset) by appending {<var>, DW_OP_constu, <type-width>, DW_OP_mul, DW_OP_plus} to the existing expression, or in otherwords adding ... + (<var> * <type-width>). When calculating variable offsets however, we make no special allowances for variable offsets where the type-width is 0; such an offset will always be 0 and hence a no-op that needlessly lengthens the DIExpression and adds a new argument (potentially causing the dbg.value to start using a DIArgList).
This patch fixes this issue by ignoring these always-0 offsets. It also fixes a bug (linked above) where an assertion assert(Offset.second.isStrictlyPositive()) would trigger in the above case, causing a crash for valid code.