Go to file
Duncan P. N. Exon Smith 836f0ddb60 Verifier: Avoid quadratic checking of aggregates for bad bitcasts
Avoid O(N^2) behaviour when checking for bad bitcasts in `ConstantExpr`s
buried inside of aggregate initializers to `GlobalVariable`s.  I've:
- centralized the "visited" set for recursing through `ConstantExpr`s so
  that expressions are only visited once per Verifier run,
- removed the duplicate logic for the stack visit, and
- avoided recursing into other `GlobalValue`s.

This recovers roughly a 100x time difference in clang compiles of a
particular input file (filled with large cross-referencing tables) that
depends on whether `-disable-llvm-verifier` is on.  This slowdown was
caused by r187506, which introduced these checks.

Now, avoiding `-disable-llvm-verifier` only causes a 2x slowdown for
this case.

(Interestingly, dumping the textual IR for this file starts at least
50GB of global variable initializers (I don't know the total, since I
killed the dump)...)

llvm-svn: 255269
2015-12-10 17:56:06 +00:00
clang [Modules] Fix regression when an elaborated-type-specifier mentions a hidden tag 2015-12-10 17:28:51 +00:00
clang-tools-extra Add a license clarification for use of links and titles of CERT secure coding guidelines. 2015-12-10 13:53:36 +00:00
compiler-rt [PGO] use COMPILER_RT_HAS_ATOMTICS macro 2015-12-10 17:27:53 +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 integer: remove explicit casts from _MIN definitions 2015-10-06 19:12:12 +00:00
libcxx Replace cmake check for printf with a check for fopen. 2015-12-10 00:45:18 +00:00
libcxxabi Replace cmake check for printf with a check for fopen. 2015-12-10 00:44:42 +00:00
libunwind Replace cmake check for printf with a check for fopen. 2015-12-10 00:47:08 +00:00
lld Add --version-script= alias for --version-script 2015-12-10 14:08:45 +00:00
lldb Add Hexagon ABI to System Initialization 2015-12-10 17:53:07 +00:00
llgo [llgo] Force exporting __morestack from llgoi 2015-11-27 04:46:46 +00:00
llvm Verifier: Avoid quadratic checking of aggregates for bad bitcasts 2015-12-10 17:56:06 +00:00
openmp Replace DYNA_* names with KMP_* names 2015-12-03 19:37:20 +00:00
polly executeScopConditionally: Introduce special exiting block 2015-12-09 11:38:22 +00:00