LLVM backend for 6502
Go to file
Andrew Trick b5c26ef9da 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148535 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20 07:41:13 +00:00
autoconf Makefile: add missing files to FilesToConfig 2012-01-17 02:56:49 +00:00
bindings
cmake cmake: pass -fvisibility-inlines-hidden if it is supported. In a 2012-01-20 04:07:48 +00:00
docs Fix typo. 2012-01-19 21:50:08 +00:00
examples
include SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
lib SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
projects revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
runtime
test SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
tools Add a TargetOption for disabling tail calls. 2012-01-19 00:34:10 +00:00
unittests Add portable bit mask operations to BitVector. 2012-01-17 01:24:32 +00:00
utils Add a CoveredBySubRegs property to Register descriptions. 2012-01-18 00:16:39 +00:00
.gitignore
CMakeLists.txt
configure revert r147542 after comments from Joerg Sonnenberger 2012-01-05 18:28:46 +00:00
CREDITS.TXT
LICENSE.TXT Happy new year 2012! 2012-01-01 08:16:56 +00:00
llvm.spec.in
LLVMBuild.txt
Makefile Makefile: add missing files to FilesToConfig 2012-01-17 02:56:49 +00:00
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.