Certain instructions with line 0 source correlation create discontiguous/split address ranges in lexical blocks. This affects Visual Studio's ability to print variables reliably because Codeview debug format used on Windows does not support describing a lexical block with multiple address ranges. As a result, LLVM compiler's Codeview emission code evaporates these lexical blocks and pushes variables to the enclosing routine scope, causing gaps in their location ranges and potential confusion with similarly named variables in the debugger. While this issue is also visible on Linux, the Dwarf debugging format can handle it without impacting debugging.
To prevent the line 0 instructions from breaking up a lexical block we fold the line zero machine instructions into the range when the switch "UnknownLocations" is not Enabled. This essentially removes the split address ranges and allows the lexical block to be treated as a contiguous range of instructions.