hanchenye-llvm-project/llvm
Teresa Johnson d3a33a16bb Resubmit "Add new EliminateAvailableExternally module pass" (r239480)
This change includes a fix for https://code.google.com/p/chromium/issues/detail?id=499508#c3,
which required updating the visibility for symbols with eliminated definitions.

--Original Commit Message--

Add new EliminateAvailableExternally module pass, which is performed in
O2 compiles just before GlobalDCE, unless we are preparing for LTO.

This pass eliminates available externally globals (turning them into
declarations), regardless of whether they are dead/unreferenced, since
we are guaranteed to have a copy available elsewhere at link time.
This enables additional opportunities for GlobalDCE.

If we are preparing for LTO (e.g. a -flto -c compile), the pass is not
included as we want to preserve available externally functions for possible
link time inlining. The FE indicates whether we are doing an -flto compile
via the new PrepareForLTO flag on the PassManagerBuilder.

llvm-svn: 241466
2015-07-06 16:22:42 +00:00
..
autoconf [Support] Lazy load of dbghlp.dll on Windows 2015-07-02 14:34:57 +00:00
bindings Remove getRelocationAddress. 2015-07-06 14:55:37 +00:00
cmake [CMake] add_llvm_symbol_exports: Use Python oneliner instead of "cmd.exe /c type" to generate *.def. 2015-07-05 08:56:38 +00:00
docs [NFC] Minor editorial fixes to the CodeGen docs. 2015-07-02 09:32:01 +00:00
examples Simplify the Mangler interface now that DataLayout is mandatory. 2015-06-23 13:59:29 +00:00
include Resubmit "Add new EliminateAvailableExternally module pass" (r239480) 2015-07-06 16:22:42 +00:00
lib Resubmit "Add new EliminateAvailableExternally module pass" (r239480) 2015-07-06 16:22:42 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
resources In MSVC builds embed a VERSIONINFO resource in our exe and DLL files. 2015-06-12 15:58:29 +00:00
test AMDGPU/SI: Add debugging subtarget feature for DS offsets 2015-07-06 16:01:58 +00:00
tools Simplify. NFC. 2015-07-06 15:53:43 +00:00
unittests Change APInt comparison with uint64_t. 2015-07-01 22:56:43 +00:00
utils Reverting r241058 because it's causing buildbot failures. 2015-06-30 12:32:53 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Simplify .gitignore: projects/* => projects/*/ 2015-06-29 17:43:26 +00:00
CMakeLists.txt Do not pass -allow-shlib-undefined to the Solaris linker. 2015-06-22 18:24:01 +00:00
CODE_OWNERS.TXT [WebAssembly] Initial WebAssembly backend 2015-06-29 23:51:55 +00:00
CREDITS.TXT [WebAssembly] Initial WebAssembly backend 2015-06-29 23:51:55 +00:00
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Disallow in-source builds (as we already do for the cmake build). 2015-07-01 18:09:21 +00:00
Makefile.rules
README.txt
configure Disallow in-source builds (as we already do for the cmake build). 2015-07-01 18:09:21 +00:00
llvm.spec.in

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.