llvm/lib/VMCore
Chris Lattner 504e8fb74e Implement a bunch of symbolic constant folding opportunities. This implements
testcase test/Regression/Assembler/ConstantExprFold.llx

Note that these kinds of things only rarely show up in source code, but are
exceedingly common in the intermediate stages of algorithms like SCCP.  By
folding things (especially relational operators) that use symbolic constants,
we are able to speculatively fold more conditional branches, which can
lead to some big simplifications.

It would be easy to add a lot more special cases here, so if you notice
SCCP missing anything "obvious", you know what to make smarter.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10812 91177308-0d34-0410-b5e6-96231b3b80d8
2004-01-13 05:51:55 +00:00
..
AsmWriter.cpp Finegrainify namespacification 2003-11-21 20:23:48 +00:00
BasicBlock.cpp Minor cleanups and simplifications 2003-11-21 16:52:05 +00:00
ConstantFold.cpp Implement a bunch of symbolic constant folding opportunities. This implements 2004-01-13 05:51:55 +00:00
ConstantFold.h Rename ConstantHandling.* -> ConstantFolding.* 2004-01-12 21:13:12 +00:00
ConstantFolding.h Rename ConstantHandling.* -> ConstantFolding.* 2004-01-12 21:13:12 +00:00
ConstantRange.cpp Remove use of ConstantHandling itf 2004-01-12 20:13:04 +00:00
Constants.cpp Rename ConstantHandling.* -> ConstantFolding.* 2004-01-12 21:13:12 +00:00
Dominators.cpp The recalclulate method was a nasty hack that was once used by the -cee pass, 2003-12-07 00:55:32 +00:00
Function.cpp Hrm, another minor cleanup, which I missed before 2004-01-10 21:42:24 +00:00
iBranch.cpp Somehow I forgot poor little UnwindInst 2003-11-20 18:11:56 +00:00
iCall.cpp * Finegrainify namespacification 2003-11-20 17:45:12 +00:00
iMemory.cpp Finegrainify namespacification 2003-11-21 20:23:48 +00:00
InstrTypes.cpp * Finegrainify namespacification 2003-11-20 17:45:12 +00:00
Instruction.cpp Implement new Instruction::isRelational method 2004-01-12 23:18:25 +00:00
IntrinsicLowering.cpp Add VMCore and code generator support for debugging intrinsics. By default 2004-01-05 05:36:30 +00:00
iOperators.cpp * Finegrainify namespacification 2003-11-20 17:45:12 +00:00
iSwitch.cpp * Finegrainify namespacification 2003-11-20 17:45:12 +00:00
LeakDetector.cpp Finegrainify namespacification 2003-12-14 21:35:53 +00:00
Linker.cpp Remove use of ConstantExpr::getShift 2004-01-12 19:10:58 +00:00
Makefile Added LLVM copyright notice to Makefiles. 2003-10-20 22:26:57 +00:00
Mangler.cpp Finegrainify namespacification 2003-12-14 21:35:53 +00:00
Module.cpp Add some comments, add new getGlobalVariable method 2003-12-31 08:43:01 +00:00
ModuleProvider.cpp Finegrainify namespacification 2003-11-21 20:23:48 +00:00
Pass.cpp Finegrainify namespacification 2003-11-21 20:23:48 +00:00
PassManagerT.h Put all LLVM code into the llvm namespace, as per bug 109. 2003-11-11 22:41:34 +00:00
SlotCalculator.cpp Urg, remove testing code. 2004-01-11 23:30:03 +00:00
SymbolTable.cpp Make the lookup method const. 2003-12-31 07:08:19 +00:00
SymbolTableListTraitsImpl.h Put all LLVM code into the llvm namespace, as per bug 109. 2003-11-11 22:41:34 +00:00
Type.cpp Fix PR198 2003-12-31 03:19:37 +00:00
Value.cpp Finegrainify namespacification 2003-11-21 20:23:48 +00:00
Verifier.cpp Add support for new intrinsic 2004-01-06 05:33:02 +00:00