LLVM backend for 6502
Go to file
Chandler Carruth 35c4e071be Teach the load analysis driving core instcombine logic and other bits of
logic to look through pointer casts, making them trivially stronger in
the face of loads and stores with intervening pointer casts.

I've included a few test cases that demonstrate the kind of folding
instcombine can do without pointer casts and then variations which
obfuscate the logic through bitcasts. Without this patch, the variations
all fail to optimize fully.

This is more important now than it has been in the past as I've started
moving the load canonicialization to more closely follow the value type
requirements rather than the pointer type requirements and thus this
needs to be prepared for more pointer casts. When I made the same change
to stores several test cases regressed without logic along these lines
so I wanted to systematically improve matters first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220178 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-20 00:24:14 +00:00
autoconf Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
bindings Fix bashism in build.sh. 2014-10-17 02:20:40 +00:00
cmake Always use -Wl,-gc-sections on our build. 2014-10-19 23:24:46 +00:00
docs [llvm-symbolizer] Introduce the -dsym-hint option. 2014-10-17 00:50:19 +00:00
examples
include [ADT] Add a 'find_as' operation to DenseSet. 2014-10-19 19:36:33 +00:00
lib Teach the load analysis driving core instcombine logic and other bits of 2014-10-20 00:24:14 +00:00
projects
test Teach the load analysis driving core instcombine logic and other bits of 2014-10-20 00:24:14 +00:00
tools Add a test that would have found the bug in r219829. 2014-10-17 01:34:23 +00:00
unittests [ADT] Add a 'find_as' operation to DenseSet. 2014-10-19 19:36:33 +00:00
utils Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
CMakeLists.txt
CODE_OWNERS.TXT
configure Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
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 documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

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