Go to file
Mikhail Maltsev ffaa8a8781 [IR] Do not assume that function pointers are aligned
Summary:
The value tracking analysis uses function alignment to infer that the
least significant bits of function pointers are known to be zero.
Unfortunately, this is not correct for ARM targets: the least
significant bit of a function pointer stores the ARM/Thumb state
information (i.e., the LSB is set for Thumb functions and cleared for
ARM functions).

The original approach (https://reviews.llvm.org/D44781) introduced a
new field for function pointer alignment in the DataLayout structure
to address this. But it seems unlikely that optimizations based on
function pointer alignment would bring much benefit in practice to
justify the additional maintenance burden, so this patch simply
assumes that function pointer alignment is always unknown.

Reviewers: javed.absar, efriedma

Reviewed By: efriedma

Subscribers: kristof.beyls, llvm-commits, hfinkel, rogfer01

Differential Revision: https://reviews.llvm.org/D46110

llvm-svn: 331025
2018-04-27 09:12:12 +00:00
clang Make MultiplexASTDeserializationListener part of the API [NFC] 2018-04-27 07:05:40 +00:00
clang-tools-extra [clangd] Add "str()" method to SymbolID. 2018-04-25 15:27:09 +00:00
compiler-rt tsan: improve "destroy of a locked mutex" reports 2018-04-27 08:59:35 +00:00
debuginfo-tests [Darwin] Specify DWARF 2/4 when running apple accelerator tests. 2018-02-26 20:56:45 +00:00
libclc relational/select: Condition types for half are short/ushort, not char/uchar 2018-04-25 17:36:36 +00:00
libcxx [libcxx] [test] Remove non-portable assertions from filebuf tests 2018-04-26 22:18:33 +00:00
libcxxabi [libc++abi] Replace __sync_* functions with __libcpp_atomic_* functions. 2018-04-16 22:00:14 +00:00
libunwind [cmake] Remove duplicate command line options from build 2018-04-05 20:27:50 +00:00
lld [ELF] Fix typo. NFC 2018-04-27 05:50:40 +00:00
lldb Fix a thinko in the iteration over StructuredDataPlugin Create functions. 2018-04-27 01:57:40 +00:00
llgo irgen: Create functions instead of global variables for builtin hash and equal algorithms. 2017-06-04 22:11:28 +00:00
llvm [IR] Do not assume that function pointers are aligned 2018-04-27 09:12:12 +00:00
openmp [OpenMP] Remove compilation warning when using clang to compile bc files. 2018-04-26 14:06:53 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [CodeGen] Fix comment. NFC. 2018-04-25 19:54:16 +00:00
README.md Add an svn project to contain the files that appear at the root of the 2017-10-19 21:09:49 +00:00

README.md

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.