llvm with tablegen backend for capstone disassembler
Go to file
Pavel Labath 324396466c DWARF: Don't compute address ranges for type units
Summary:
Type units don't describe any code, so they should never be the result
of any address lookup queries.

Previously, we would compute the address ranges for the type units for
via the line tables they reference because the type units looked a lot
like line-tables-only compile units. However, this is not correct, as
the line tables are only referenced from type units so that other
declarations can use the file names contained in them.

In this patch I make the BuildAddressRangeTable function virtual, and
implement it only for compile units.

Testing this was a bit tricky, because the behavior depends on the order
in which we add things to the address range map. This rarely caused a
problem with DWARF v4 type units, as they are always added after all
CUs. It happened more frequently with DWARF v5, as there clang emits the
type units first. However, this is still not something that it is
required to do, so for testing I've created an assembly file where I've
deliberately sandwiched a compile unit between two type units, which
should isolate us from both changes in how the compiler emits the units
and changes in the order we process them.

Reviewers: clayborg, aprantl, JDevlieghere

Subscribers: jdoerfert, lldb-commits

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

llvm-svn: 361465
2019-05-23 09:07:51 +00:00
clang [CodeComplete] Complete a lambda when preferred type is a function 2019-05-23 07:45:35 +00:00
clang-tools-extra [clangd-vscode] Bump versions dependencies. NFC 2019-05-23 08:06:24 +00:00
compiler-rt [libFuzzer] remove the data-flow-trace (DFT) python scripts; their functionality is now part of libFuzzer proper; also write functions.txt to the disk only if this file doesn't exist yet 2019-05-23 01:03:42 +00:00
debuginfo-tests Set config.lit_tools_dir, which is needed by lit.llvm.initialize. 2018-11-06 21:54:27 +00:00
libclc travis: Add LLVM-8 build 2019-03-27 21:28:31 +00:00
libcxx [runtimes] Move libunwind, libc++abi and libc++ to lib/$target/c++ and include/c++ 2019-05-22 21:08:33 +00:00
libcxxabi [runtimes] Move libunwind, libc++abi and libc++ to lib/$target/c++ and include/c++ 2019-05-22 21:08:33 +00:00
libunwind [runtimes] Move libunwind, libc++abi and libc++ to lib/$target/c++ and include/c++ 2019-05-22 21:08:33 +00:00
lld Re-land r361206 "[COFF] Store alignment in log2 form, NFC" 2019-05-22 20:21:52 +00:00
lldb DWARF: Don't compute address ranges for type units 2019-05-23 09:07:51 +00:00
llgo IR: Support parsing numeric block ids, and emit them in textual output. 2019-03-22 18:27:13 +00:00
llvm [ARM][CGP] Clear SafeWrap before each search 2019-05-23 07:46:39 +00:00
openmp [OPENMP][NVPTX]Fix barriers and parallel level counters, NFC. 2019-05-22 19:50:32 +00:00
parallel-libs Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
polly [DeLICM] Use polly::singleton to allow empty result. 2019-05-21 19:18:26 +00:00
pstl [pstl] Make the default backend be the serial backend and always provide parallel policies 2019-04-24 20:12:36 +00:00
.arcconfig Update monorepo .arcconfig with new project callsign. 2019-01-31 14:34:59 +00:00
.clang-format Add .clang-tidy and .clang-format files to the toplevel of the 2019-01-29 16:43:16 +00:00
.clang-tidy Disable tidy checks with too many hits 2019-02-01 11:20:13 +00:00
.gitignore Add a reduced copy of the llvm .gitignore 2019-04-09 00:52:49 +00:00
README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.