llvm-6502/lib/Transforms/IPO
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
..
ArgumentPromotion.cpp Use the AttributeSet instead of AttributeWithIndex. 2013-01-27 01:57:28 +00:00
BarrierNoopPass.cpp
CMakeLists.txt
ConstantMerge.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
DeadArgumentElimination.cpp Revert accidental commit (ran svn commit from wrong directory). 2013-02-02 00:25:26 +00:00
ExtractGV.cpp Check isDiscardableIfUnused, rather than hasLocalLinkage, when bumping 2013-03-04 22:40:44 +00:00
FunctionAttrs.cpp Move library call prototype attribute inference to functionattrs 2013-03-21 00:55:59 +00:00
GlobalDCE.cpp Fix a scalability issue with complex ConstantExprs. 2013-04-13 12:53:18 +00:00
GlobalOpt.cpp Use a worklist to avoid a sneaky iterator invalidation. 2013-04-02 08:16:45 +00:00
InlineAlways.cpp Make the inline cost a proper analysis pass. This remains essentially 2013-01-21 11:39:18 +00:00
Inliner.cpp Add the IR attribute 'sspstrong'. 2013-01-23 06:41:41 +00:00
InlineSimple.cpp Make the inline cost a proper analysis pass. This remains essentially 2013-01-21 11:39:18 +00:00
Internalize.cpp added ability to dynamically change the ExportList of an already 2013-01-25 19:41:03 +00:00
IPConstantPropagation.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
IPO.cpp
LLVMBuild.txt Extracted ObjCARC.cpp into its own library libLLVMObjCARCOpts in preparation for refactoring the ARC Optimizer. 2013-01-28 01:35:51 +00:00
LoopExtractor.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
Makefile
MergeFunctions.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PartialInlining.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
PassManagerBuilder.cpp Use LLVMBool instead of 'bool' in the C API. Based on a patch by Peter Zotov! 2013-03-10 21:58:22 +00:00
PruneEH.cpp Remove addRetAttributes and addFnAttributes, which aren't useful abstractions. 2013-01-30 23:40:31 +00:00
StripDeadPrototypes.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
StripSymbols.cpp Move TypeFinder.h into the IR tree, it clearly belongs with the IR library. 2013-01-07 15:43:51 +00:00