mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-23 19:17:17 +00:00
a4ca999339
Summary: Using the linker-supplied list of "preserved" symbols, we can compute the list of "dead" symbols, i.e. the one that are not reachable from a "preserved" symbol transitively on the reference graph. Right now we are using this information to mark these functions as non-eligible for import. The impact is two folds: - Reduction of compile time: we don't import these functions anywhere or import the function these symbols are calling. - The limited number of import/export leads to better internalization. Patch originally by Mehdi Amini. Reviewers: mehdi_amini, pcc Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23488 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291177 91177308-0d34-0410-b5e6-96231b3b80d8
23 lines
588 B
LLVM
23 lines
588 B
LLVM
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.11.0"
|
|
|
|
declare void @dead_func()
|
|
|
|
; Called from a @dead_func() in the other file, should not be imported there
|
|
; Ensure the cycle formed by calling @dead_func doesn't prevent stripping.
|
|
define void @baz() {
|
|
call void @dead_func()
|
|
ret void
|
|
}
|
|
|
|
; Called via llvm.global_ctors, should be detected as live via the
|
|
; marking of llvm.global_ctors as a live root in the index.
|
|
define void @boo() {
|
|
ret void
|
|
}
|
|
|
|
define void @another_dead_func() {
|
|
call void @dead_func()
|
|
ret void
|
|
}
|