llvm-project/llvm
Reid Kleckner f5d935c167 [WinCFG] Handle constant casts carefully in .gfids emission
Summary:
The general Function::hasAddressTaken has two issues that make it
inappropriate for our purposes:
1. it is sensitive to dead constant users (PR43858 / crbug.com/1019970),
   leading to different codegen when debu info is enabled
2. it considers direct calls via a function cast to be address escapes

The first is fixable, but the second is not, because IPO clients rely on
this behavior. They assume this function means that all call sites are
analyzable for IPO purposes.

So, implement our own analysis, which gets closer to finding functions
that may be indirect call targets.

Reviewers: ajpaverd, efriedma, hans

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69676
2019-11-01 13:32:03 -07:00
..
benchmarks
bindings Update version number in llvm python bindings 2019-10-25 17:14:11 -04:00
cmake Revert "[NFC] Rename LLVM_NO_DEAD_STRIP" 2019-10-30 14:56:20 -04:00
docs Add MemTagSanitizer documentation. 2019-11-01 10:46:04 -07:00
examples Break out OrcError and RPC 2019-10-29 17:31:28 -07:00
include [WebAssembly] Add experimental SIMD dot product instruction 2019-11-01 10:45:48 -07:00
lib [WinCFG] Handle constant casts carefully in .gfids emission 2019-11-01 13:32:03 -07:00
projects Add few docs and implementation of strcpy and strcat. 2019-10-04 17:30:54 +00:00
resources
runtimes
test [WinCFG] Handle constant casts carefully in .gfids emission 2019-11-01 13:32:03 -07:00
tools [dsymutil] Add DW_TAG_common_block to dieNeedsChildrenToBeMeaningful 2019-11-01 10:49:07 -07:00
unittests [X86] Fix -DBUILD_SHARED_LIBS=on builds after D69568/llvmorg-10-init-8877-g3a399c09878 2019-11-01 09:51:17 -07:00
utils [lit] Fix internal env calling env 2019-11-01 14:08:52 -04:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt build: remove `LLVM_CXX_STD` extension point 2019-10-25 11:51:47 -07:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt Test commit. 2019-10-03 14:57:49 +00:00
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.