Mirror of official llvm git repository located at http://llvm.org/git/llvm. Updated every five minutes.
Go to file
Teresa Johnson 7d2e3aa58e [ThinLTO] Stop importing constant global vars as copies in the backend
Summary:
We were doing an optimization in the ThinLTO backends of importing
constant unnamed_addr globals unconditionally as a local copy (regardless
of whether the thin link decided to import them). This should be done in
the thin link instead, so that resulting exported references are marked
and promoted appropriately, but will need a summary enhancement to mark
these variables as constant unnamed_addr.

The function import logic during the thin link was trying to handle
this proactively, by conservatively marking all values referenced in
the initializer lists of exported global variables as also exported.
However, this only handled values referenced directly from the
initializer list of an exported global variable. If the value is itself
a constant unnamed_addr variable, we could end up exporting its
references as well. This caused multiple issues. The first is that the
transitively exported references weren't promoted. Secondly, some could
not be promoted/renamed (e.g. they had a section or other constraint).
recursively, instead of just adding the first level of initializer list
references to the ExportList directly.

Remove this optimization and the associated handling in the function
import backend. SPEC measurements indicate we weren't getting much
from it in any case.

Fixes PR31052.

Reviewers: mehdi_amini

Subscribers: krasin, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288446 91177308-0d34-0410-b5e6-96231b3b80d8
2016-12-02 01:02:30 +00:00
bindings Fix go binding to adapt the new attribute API 2016-11-18 10:11:02 +00:00
cmake cmake: Set rpath for loadable modules as well as shared libraries. 2016-11-28 21:59:14 +00:00
docs Revert 'Test commit as per developer policy' 2016-11-30 08:24:43 +00:00
examples ExceptionDemo: remove some undefined behaviour 2016-11-20 02:36:38 +00:00
include [MC] Refactor emitELFSize to make usage more consistent. NFC. 2016-12-01 23:39:08 +00:00
lib [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
projects [CMake] Correct configuration order of the sub-projects based on ther dependancies 2016-10-09 20:38:29 +00:00
resources
runtimes [CMake] Make the runtimes directory work with bootstrap builds 2016-10-19 21:50:25 +00:00
test [ThinLTO] Stop importing constant global vars as copies in the backend 2016-12-02 01:02:30 +00:00
tools llvm-modextract: Call keep() on the output stream before exiting. 2016-12-01 23:13:11 +00:00
unittests Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
utils [tablegen] Delete duplicates from a vector without skipping elements 2016-12-01 19:38:50 +00:00
.arcconfig project_id is from another era in phabricator land and does not provide any value. 2016-09-27 15:47:29 +00:00
.clang-format
.clang-tidy .clang-tidy: correct style name is 'camelBack' not 'lowerCase'. 2016-09-13 19:04:26 +00:00
.gitignore gitignore: ignore VS Code editor files 2016-09-02 22:54:26 +00:00
CMakeLists.txt Add link-time detection of LLVM_ABI_BREAKING_CHECKS mismatch 2016-11-28 22:23:53 +00:00
CODE_OWNERS.TXT CODE_OWNERS: Take ownership of Loop Strenght Reduce. 2016-11-30 19:55:49 +00:00
configure
CREDITS.TXT Test Commit, removing a blank line in CREDITS.TXT 2016-11-24 15:40:19 +00:00
LICENSE.TXT Remove autoconf references from LICENSE.TXT 2016-08-12 20:11:03 +00:00
llvm.spec.in
LLVMBuild.txt
README.txt Test commit, deleted empty line at the end of README.txt 2016-11-07 18:31:21 +00:00
RELEASE_TESTERS.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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.