RFC https://discourse.llvm.org/t/rfc-dwarfdebug-fix-and-improve-handling-imported-entities-types-and-static-local-in-subprogram-and-lexical-block-scopes/68544 This patch moves the emission of global variables from `DwarfDebug::beginModule()` to `DwarfDebug::endModule()`. It has the following effects: 1. The order of debug entities in the resulting DWARF changes. 2. Currently, if a DISubprogram requires emission of both concrete out-of-line and inlined subprogram DIEs, and such a subprogram contains a static local variable, the DIE for the variable is emitted into the concrete out-of-line subprogram DIE. As a result, the variable is not available in debugger when breaking at the inlined function instance. It happens because static locals are emitted in `DwarfDebug::beginModule()`, but abstract DIEs for functions that are not completely inlined away are created only later during `DwarfDebug::endFunctionImpl()` calls. With this patch, DIEs for static local variables of subprograms that have both inlined and the concrete out-of-line instances are placed into abstract subprogram DIEs. They become visible in debugger when breaking at concrete out-of-line and inlined function instances. `llvm/test/DebugInfo/Generic/inlined-static-var.ll` illustrates that. 3. It will allow to simplify abstract subprogram DIEs creation by reverting https://github.com/llvm/llvm-project/pull/159104 later. This is needed to simplify DWARF emission in a context of proper support of function-local static variables which comes in the next patch (https://reviews.llvm.org/D144008), making all function-local entities handled in `DwarfDebug::endModuleImpl()`. Authored-by: Kristina Bessonova <kbessonova@accesssoftek.com> Co-authored-by: David Blaikie <dblaikie@gmail.com> Co-authored-by: Vladislav Dzhidzhoev <vdzhidzhoev@accesssoftek.com>
LLVM Linker (lld)
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
Benchmarking
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.