aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/StringRef.cpp
diff options
context:
space:
mode:
authorArtem Dergachev <adergachev@apple.com>2024-01-10 18:45:27 -0800
committerArtem Dergachev <adergachev@apple.com>2024-01-11 15:16:10 -0800
commit721dd3bc2f159f58542653b56ae272f1504875f8 (patch)
tree1dda1eee4ce55a3e51c05a96a795df806bd963db /llvm/lib/Support/StringRef.cpp
parent5f59b720a8fc41d65964b88c64f803af86ed3cc8 (diff)
downloadllvm-721dd3bc2f159f58542653b56ae272f1504875f8.zip
llvm-721dd3bc2f159f58542653b56ae272f1504875f8.tar.gz
llvm-721dd3bc2f159f58542653b56ae272f1504875f8.tar.bz2
[analyzer] NFC: Don't regenerate duplicate HTML reports.
This is a performance optimization for HTML diagnostics output mode. Currently they're incredibly inefficient: * The HTMLRewriter is re-run from scratch on every file on every report. Each such re-run involves re-lexing the entire file and producing a syntax-highlighted webpage of the entire file, with text behind macros duplicated as pop-up macro expansion tooltips. Then, warning and note bubbles are injected into the page. Only the bubble part is different across reports; everything else can theoretically be cached. * Additionally, if duplicate reports are emitted (with the same issue hash), HTMLRewriter will be re-run even though the output file is going to be discarded due to filename collision. This is mostly an issue for path-insensitive bug reports because path-sensitive bug reports are already deduplicated by the BugReporter as part of searching for the shortest bug path. But on some translation units almost 80% of bug reports are dry-run here. We only get away with all this because there are usually very few reports emitted per file. But if loud checkers are enabled, such as `webkit.*`, this may explode in complexity and even cause the compiler to run over the 32-bit SourceLocation addressing limit. (We're re-lexing everything each time, remember?) This patch hotfixes the *second* problem. Adds a FIXME for the first problem, which will require more yak shaving to solve. rdar://120801986
Diffstat (limited to 'llvm/lib/Support/StringRef.cpp')
0 files changed, 0 insertions, 0 deletions