llvm-project/llvm/lib/Transforms
Eli Friedman 79d297abe4 [GlobalOpt] Fix exponential compile-time with selects.
If you have a long chain of select instructions created from something
like `int* p = &g; if (foo()) p += 4; if (foo2()) p += 4;` etc., a naive
recursive visitor will recursively visit each select twice, which is
O(2^N) in the number of select instructions. Use the visited set to cut
off recursion in this case.

(No testcase because this doesn't actually change the behavior, just the
time.)

Differential Revision: https://reviews.llvm.org/D42451

llvm-svn: 323910
2018-01-31 20:42:25 +00:00
..
AggressiveInstCombine [AggressiveInstCombine] Make TruncCombine class ignore unreachable basic blocks. 2018-01-31 10:41:31 +00:00
Coroutines Make internal/private GVs implicitly dso_local. 2018-01-11 22:15:05 +00:00
Hello
IPO LTO: Drop comdats when converting definitions to declarations. 2018-01-31 02:51:03 +00:00
InstCombine AMDGPU: Add intrinsics llvm.amdgcn.cvt.{pknorm.i16, pknorm.u16, pk.i16, pk.u16} 2018-01-31 20:18:04 +00:00
Instrumentation [InstrProfiling] Don't exit early when an unused intrinsic is found 2018-01-27 00:01:04 +00:00
ObjCARC [ObjCARC] Do not turn a call to @objc_autoreleaseReturnValue into a call 2018-01-19 23:51:13 +00:00
Scalar [SeparateConstOffsetFromGEP] Preserve metadata when splitting GEPs 2018-01-31 20:17:52 +00:00
Utils [GlobalOpt] Fix exponential compile-time with selects. 2018-01-31 20:42:25 +00:00
Vectorize [SLP] Fix for PR32086: Count InsertElementInstr of the same elements as shuffle. 2018-01-29 16:08:52 +00:00
CMakeLists.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00