LLVM backend for 6502
Go to file
Chandler Carruth 2c107a8020 Rephrase the speculating scan of the conditional BB to be phrased in
terms of cost rather than hoisting a single instruction.

This does *not* change the cost model! We still set the cost threshold
at 1 here, it's just that we track it by accumulating cost rather than
by storing an instruction.

The primary advantage is that we no longer leave no-op intrinsics in the
basic block. For example, this will now move both debug info intrinsics
and a single instruction, instead of only moving the instruction and
leaving a basic block with nothing bug debug info intrinsics in it, and
those intrinsics now no longer ordered correctly with the hoisted value.

Instead, we now splice the entire conditional basic block's instruction
sequence.

This also places the code for checking the safety of hoisting next to
the code computing the cost.

Currently, the only observable side-effect of this change is that debug
info intrinsics are no longer abandoned. I'm not sure how to craft
a test case for this, and my real goal was the refactoring, but I'll
talk to Dave or Eric about how to add a test case for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173339 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-24 11:52:58 +00:00
autoconf Disable Uninitialized Use Warnings for Broken gcc Versions 2013-01-15 18:21:15 +00:00
bindings [python] Add markup option to disassembler 2012-12-01 21:57:30 +00:00
cmake Add time getters to the process interface for requesting the elapsed 2013-01-04 23:19:55 +00:00
docs Fix small typo 2013-01-23 22:05:19 +00:00
examples Update links to "Itanium C++ ABI: Exception Handling" document 2013-01-13 15:53:09 +00:00
include Add asserts to SmallVector so that calls to front() and back() only succeed 2013-01-24 04:29:24 +00:00
lib Rephrase the speculating scan of the conditional BB to be phrased in 2013-01-24 11:52:58 +00:00
projects Clean up the sample include orderings, not that it really matters... 2012-12-04 10:46:21 +00:00
runtime libprofile/CommonProfiling.c: Fix according to C89. 2012-11-02 01:32:02 +00:00
test [asan] adaptive redzones for globals (the larger the global the larger is the redzone) 2013-01-24 10:35:40 +00:00
tools llvm-symbolizer: factor out bits of the tool into separate LLVMSymbolize.{h,cpp} files. No functionality change. 2013-01-22 14:21:19 +00:00
unittests llvm/unittests: Use OwningPtr to fix --vg-leak. 2013-01-23 08:33:13 +00:00
utils Add the IR attribute 'sspstrong'. 2013-01-23 06:41:41 +00:00
.arcconfig Add .arcconfig to the repository. Useful if someone wants to use phabricator's command line tool. 2012-12-01 12:07:58 +00:00
.gitignore
CMakeLists.txt Fix spelling 2012-12-13 15:25:07 +00:00
CODE_OWNERS.TXT Update CODE_OWNERS.TXT. 2013-01-15 09:37:45 +00:00
configure Disable Uninitialized Use Warnings for Broken gcc Versions 2013-01-15 18:21:15 +00:00
CREDITS.TXT Update my email address. 2012-11-29 21:17:26 +00:00
LICENSE.TXT Add LICENSE.TXT covering contributions made by ARM. 2013-01-07 10:04:49 +00:00
llvm.spec.in
LLVMBuild.txt
Makefile Update the root Makefile for VMCore -> IR. Missed by my original search 2013-01-02 09:27:25 +00:00
Makefile.common Makefile.common: Update a description, s/Source/SOURCES/ , according to MakefileGuide.html#control-variables . 2012-12-07 01:43:23 +00:00
Makefile.config.in Introduce llvm::sys::getProcessTriple() function. 2013-01-16 17:27:22 +00:00
Makefile.rules Pass NO_MISSING_FIELD_INITIALIZERS to Compiler Flags 2013-01-18 23:22:52 +00:00
README.txt Update README.txt to more accurately reflect reality. 2013-01-08 02:35:15 +00:00

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.