This patch teaches the preprocessor to report more precise source ranges for code that is skipped due to conditional directives.
The new behavior includes the '#' from the opening directive and the full text of the line containing the closing directive in the skipped area. This matches up clang's behavior (we don't IRGen the code between the closing "endif" and the end of a line).
This also affects the code coverage implementation. See llvm.org/PR34166 (this also happens to be rdar://problem/23224058).
This doesn't really handle backslash-escaped newlines correctly. (Not likely to matter, I guess, but better to get it right while we're messing with it.)
Could we use CurPPLexer->getSourceLocation() or something like that, instead of trying to scan the line ourselves?