LLVM backend for 6502
Go to file
Saleem Abdulrasool 91bbc253bd ARM: correct bundle generation for MOV32T relocations
Although the previous code would construct a bundle and add the correct elements
to it, it would not finalise the bundle.  This resulted in the InternalRead
markers not being added to the MachineOperands nor, more importantly, the
externally visible defs to the bundle itself.  So, although the bundle was not
exposing the def, the generated code would be correct because there was no
optimisations being performed.  When optimisations were enabled, the post
register allocator would kick in, and the hazard recognizer would reorder
operations around the load which would define the value being operated upon.

Rather than manually constructing the bundle, simply construct and finalise the
bundle via the finaliseBundle call after both MIs have been emitted.  This
improves the code generation with optimisations where IMAGE_REL_ARM_MOV32T
relocations are emitted.

The changes to the other tests are the result of the bundle generation
preventing the scheduler from hoisting the moves across the loads.  The net
effect of the generated code is equivalent, but, is much more identical to what
is actually being lowered.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209267 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-21 01:25:24 +00:00
autoconf
bindings [OCaml] Add an ocamlfind package llvm.all_backends. 2014-05-01 21:00:52 +00:00
cmake cmake: Remove -D NDEBUG from CFLAGS as well as CXXFLAGS 2014-05-19 21:13:41 +00:00
docs Clean up language and grammar. 2014-05-20 17:11:11 +00:00
examples Try to fix the msvc build. 2014-04-29 23:37:02 +00:00
include This command line option is only used in one place. Move it there and 2014-05-21 00:20:01 +00:00
lib ARM: correct bundle generation for MOV32T relocations 2014-05-21 01:25:24 +00:00
projects
test ARM: correct bundle generation for MOV32T relocations 2014-05-21 01:25:24 +00:00
tools This command line option is only used in one place. Move it there and 2014-05-21 00:20:01 +00:00
unittests Use std::unique_ptr instead of OwningPtr in the MemoryBuffer unittests. 2014-05-18 21:01:46 +00:00
utils Clean up language and grammar. 2014-05-20 17:11:11 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:57:04 +00:00
.clang-format
.gitignore
CMakeLists.txt [CMake] Add build rules for llvm-PerfectShuffle utility 2014-05-07 16:54:00 +00:00
CODE_OWNERS.TXT ARM Linux support 2014-04-02 23:03:28 +00:00
configure
CREDITS.TXT Test commit. 2014-04-10 22:25:51 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules autoconf: Fix libLLVM-Major-Minor-Patch.so symlink 2014-05-15 19:50:25 +00:00
README.txt Trivial test commit. 2014-04-26 19:05:45 +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.