llvm/lib/IR
Benjamin Kramer 8848680ce0 Fix a scalability issue with complex ConstantExprs.
This is basically the same fix in three different places. We use a set to avoid
walking the whole tree of a big ConstantExprs multiple times.

For example: (select cmp, (add big_expr 1), (add big_expr 2))
We don't want to visit big_expr twice here, it may consist of thousands of
nodes.

The testcase exercises this by creating an insanely large ConstantExprs out of
a loop. It's questionable if the optimizer should ever create those, but this
can be triggered with real C code. Fixes PR15714.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179458 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-13 12:53:18 +00:00
..
AsmWriter.cpp Remove support for versioned debug info. 2013-03-11 23:39:23 +00:00
AttributeImpl.h Don't add the 'Value' string if there isn't one. 2013-02-28 21:17:03 +00:00
Attributes.cpp Add some additonal attribute helper functions. Test will be on follow 2013-03-13 20:20:08 +00:00
AutoUpgrade.cpp
BasicBlock.cpp
CMakeLists.txt Move TargetTransformInfo to live under the Analysis library. This no 2013-01-07 03:08:10 +00:00
ConstantFold.cpp IR: Don't constant fold GEP bitcasts between different address spaces 2013-02-27 02:26:42 +00:00
ConstantFold.h
Constants.cpp Fix a scalability issue with complex ConstantExprs. 2013-04-13 12:53:18 +00:00
ConstantsContext.h
Core.cpp Add multithreading functions and shutdown to the C API. Patch by Moritz 2013-02-17 16:35:51 +00:00
DataLayout.cpp InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV, i)) C) to a bit test. 2013-03-22 08:25:01 +00:00
DebugInfo.cpp Revert "Adding DIImportedModules to DIScopes." 2013-03-28 02:44:59 +00:00
DebugLoc.cpp
DIBuilder.cpp Support and test template arguments for unions. 2013-04-02 22:55:56 +00:00
Dominators.cpp
Function.cpp minor code style cleanup. 2013-03-20 21:04:53 +00:00
GCOV.cpp
Globals.cpp Added instance variable/initializers/getter/setters for new keyword externally initialized to GlobalVariable. No *TRUE* functionality change. 2013-02-03 21:54:38 +00:00
GVMaterializer.cpp
InlineAsm.cpp Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
Instruction.cpp Fix a bug in mayHaveSideEffects. Functions that do not return are now considered as instructions with side effects. 2013-02-19 20:02:09 +00:00
Instructions.cpp Revert r177675. This is language-specific and shouldn't be in the API. 2013-03-22 18:46:32 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
LeakDetector.cpp
LeaksContext.h
LLVMBuild.txt
LLVMContext.cpp Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata. 2013-03-06 17:48:48 +00:00
LLVMContextImpl.cpp Revert "Rename LLVMContext diagnostic handler types and functions." 2013-02-11 05:37:07 +00:00
LLVMContextImpl.h Cache the result of Function::getIntrinsicID() in a DenseMap attached to the LLVMContext. 2013-03-01 18:48:54 +00:00
Makefile Actually update the CMake and Makefile builds correctly, and update the 2013-01-02 12:09:16 +00:00
Metadata.cpp Assert to bounds check MDNode::getOperand. 2013-03-08 21:08:23 +00:00
Module.cpp Removed extraneous #include "LLVMContextImpl.h" from lib/IR/Module.cpp 2013-03-01 21:37:24 +00:00
Pass.cpp Enable *BasicBlockPass::createPrinterPass() 2013-02-08 23:37:41 +00:00
PassManager.cpp Measure time that IR parsing took as part of the -time-passes measurement. 2013-04-03 15:33:45 +00:00
PassRegistry.cpp
PrintModulePass.cpp Enable *BasicBlockPass::createPrinterPass() 2013-02-08 23:37:41 +00:00
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp Move TypeFinder.h into the IR tree, it clearly belongs with the IR library. 2013-01-07 15:43:51 +00:00
Use.cpp Fix Casting 2013-01-14 21:04:37 +00:00
User.cpp
Value.cpp Fix a disconcerting bug in Value::isUsedInBasicBlock, which gave wrong answers for blocks larger than 3 instrs. 2013-04-12 08:33:11 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp Unify clang/llvm attributes for asan/tsan/msan (LLVM part) 2013-02-26 06:58:09 +00:00