llvm-project/llvm
Peter Collingbourne 2452d7030b IR. Change strip* family of functions to not look through aliases.
I noticed another instance of the issue where references to aliases were
being replaced with aliasees, this time in InstCombine. In the instance that
I saw it turned out to be only a QoI issue (a symbol ended up being missing
from the symbol table due to the last reference to the alias being removed,
preventing HWASAN from symbolizing a global reference), but it could easily
have manifested as incorrect behaviour.

Since this is the third such issue encountered (previously: D65118, D65314)
it seems to be time to address this common error/QoI issue once and for all
and make the strip* family of functions not look through aliases.

Includes a test for the specific issue that I saw, but no doubt there are
other similar bugs fixed here.

As with D65118 this has been tested to make sure that the optimization isn't
load bearing. I built Clang, Chromium for Linux, Android and Windows as well
as the test-suite and there were no size regressions.

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

llvm-svn: 369697
2019-08-22 19:56:14 +00:00
..
benchmarks
bindings
cmake [CMake] Update C4324 MSVC warning comment to explain its still broken at VS2019 2019-08-20 11:20:05 +00:00
docs Fix some regressions caused by r369553 on old versions of Debian and Ubuntu 2019-08-22 12:16:08 +00:00
examples [ORC] Make sure we linker-mangle symbol names in the SpeculationLayer. 2019-08-18 21:29:57 +00:00
include IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
lib IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
projects
resources
runtimes
test IR. Change strip* family of functions to not look through aliases. 2019-08-22 19:56:14 +00:00
tools Fight a bit against global initializers. NFC. 2019-08-22 19:43:27 +00:00
unittests [Support] Improve readNativeFile(Slice) interface 2019-08-22 08:13:30 +00:00
utils gn build: Merge r369680 2019-08-22 18:22:05 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Autogenerate the shebang lines for tools/opt-viewer 2019-08-21 01:48:28 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

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.

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.