LLVM backend for 6502
Go to file
Justin Bogner 5e4931b489 InstrProf: Do a better job of reading coverage mapping data.
This code was casting regions of a memory buffer to a couple of
different structs. This is wrong in a few ways:

1. It breaks aliasing rules.
2. If the buffer isn't aligned, it hits undefined behaviour.
3. It completely ignores endianness differences.
4. The structs being defined for this aren't specifying their padding
   properly, so this doesn't even represent the data properly on some
   platforms.

This commit is mostly NFC, except that it fixes reading coverage for
32 bit binaries as a side effect of getting rid of the mispadded
structs. I've included a test for that.

I've also baked in that we only handle little endian more explicitly,
since that was true in practice already. I'll fix this to handle
endianness properly in a followup commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232346 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-16 06:55:45 +00:00
autoconf
bindings Go bindings: use MDNode::replaceAllUsesWith instead of MDTuple::replaceAllUsesWith. 2015-03-05 22:55:38 +00:00
cmake
docs Adding commit msg guidelines to dev policy 2015-03-15 21:15:48 +00:00
examples
include InstrProf: Do a better job of reading coverage mapping data. 2015-03-16 06:55:45 +00:00
lib InstrProf: Do a better job of reading coverage mapping data. 2015-03-16 06:55:45 +00:00
projects
test InstrProf: Do a better job of reading coverage mapping data. 2015-03-16 06:55:45 +00:00
tools [dsymutil] Add support to generate .debug_pubnames and .debug_pubtypes 2015-03-16 02:05:10 +00:00
unittests [opaque pointer type] gep API migration 2015-03-14 21:40:10 +00:00
utils
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

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

This directory and its subdirectories contain source code for LLVM,
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.