llvm-project/llvm/lib
Andrew Trick c908b43d9f SCEVExpander fixes. Affects LSR and indvars.
LSR has gradually been improved to more aggressively reuse existing code, particularly existing phi cycles. This exposed problems with the SCEVExpander's sloppy treatment of its insertion point. I applied some rigor to the insertion point problem that will hopefully avoid an endless bug cycle in this area. Changes:

- Always used properlyDominates to check safe code hoisting.

- The insertion point provided to SCEV is now considered a lower bound. This is usually a block terminator or the use itself. Under no cirumstance may SCEVExpander insert below this point.

- LSR is reponsible for finding a "canonical" insertion point across expansion of different expressions.

- Robust logic to determine whether IV increments are in "expanded" form and/or can be safely hoisted above some insertion point.

Fixes PR11783: SCEVExpander assert.

llvm-svn: 148535
2012-01-20 07:41:13 +00:00
..
Analysis SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
Archive Support/FileSystem: Add file_magic and move a vew clients over to it. 2011-12-13 23:17:12 +00:00
AsmParser Add 'llvm_unreachable' to passify GCC's understanding of the constraints 2012-01-10 18:08:01 +00:00
Bitcode Add 'llvm_unreachable' to passify GCC's understanding of the constraints 2012-01-10 18:08:01 +00:00
CodeGen When lowering the 'resume' instruction, look to see if we can eliminate the 2012-01-20 00:53:28 +00:00
DebugInfo Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:50:00 +00:00
ExecutionEngine Fix MCJIT memory leak of owned TargetMachine. 2012-01-17 23:08:46 +00:00
Linker Link symbols with different visibilities according to the rules in the 2012-01-05 23:02:01 +00:00
MC Add a dump() implementation for sub-instruction MCOperands. 2012-01-19 19:32:20 +00:00
Object Remove unused variables. 2011-12-25 01:20:19 +00:00
Support Add support for the gnueabihf environment. Patch by Sylvestre Ledru. 2012-01-18 23:35:29 +00:00
TableGen Removing unused default switch cases in switches over enums that already account for all enumeration values explicitly. 2012-01-16 23:24:27 +00:00
Target Add support for selecting 256-bit PALIGNR. 2012-01-20 05:53:00 +00:00
Transforms SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
VMCore Provide better messages in llvm_unreachable. 2012-01-17 07:00:13 +00:00
CMakeLists.txt Move TableGen's parser and entry point into a library 2011-10-01 16:41:13 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Remove more of llvmc and dependencies. 2011-09-20 00:34:27 +00:00