Go to file
Richard Smith d230de27f8 Remove and replace DiagStatePoint tracking and lookup data structure.
Rather than storing a single flat list of SourceLocations where the diagnostic
state changes (in source order), we now store a separate list for each FileID
in which there is a diagnostic state transition. (State for other files is
built and cached lazily, on demand.) This has two consequences:

1) We can now sensibly support modules, and properly track the diagnostic state
for modular headers (this matters when, for instance, triggering instantiation
of a template defined within a module triggers diagnostics).

2) It's much faster than the old approach, since we can now just do a binary
search on the offsets within the FileID rather than needing to call
isBeforeInTranslationUnit to determine source order (which is surprisingly
slow). For some pathological (but real world) files, this reduces total
compilation time by more than 10%.

For now, the diagnostic state points for modules are loaded eagerly. It seems
feasible to defer this until diagnostic state information for one of the
module's files is needed, but that's not part of this patch.

llvm-svn: 293123
2017-01-26 01:01:01 +00:00
clang Remove and replace DiagStatePoint tracking and lookup data structure. 2017-01-26 01:01:01 +00:00
clang-tools-extra [clang-tidy] Don't modernize-raw-string-literal if replacement is longer. 2017-01-24 15:18:11 +00:00
compiler-rt builtins: remove an errant ':' 2017-01-26 00:37:55 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc math: Add logb builtin 2017-01-18 03:14:10 +00:00
libcxx Fixed a typo in the synopsis (noecept -> noexcept). Thanks to Kim for the catch 2017-01-25 20:14:03 +00:00
libcxxabi cxa_demangle: fix rvalue ref check 2017-01-24 19:57:05 +00:00
libunwind DWARF: fix -Asserts builds 2017-01-25 02:27:45 +00:00
lld COFF: add test for /INCLUDE directives specified in bitcode 2017-01-25 23:07:40 +00:00
lldb Fix SBData::SetData() so that it always sets the address byte size correctly and added a test. 2017-01-25 21:50:28 +00:00
llgo [llgo] Remove support for LLVM attributes 2016-12-06 19:22:04 +00:00
llvm [NewGVN] Skip uses in unreachable blocks. 2017-01-26 00:42:42 +00:00
openmp [OpenMP] Initial implementation of OpenMP offloading library - libomptarget. 2017-01-25 21:27:24 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly BlockGenerator: Do not redundantly reload from PHI-allocas in non-affine stmts 2017-01-19 14:12:45 +00:00