Summary: Invoke the weak/linkonce symbol resolution support (already used by libLTO) that operates via the summary index. This ensures prevailing linkonce are kept, by making them weak, and marks preempted copies as available_externally when possible. With this change, the older support for keeping the prevailing linkonce (by changing their symbol resolution) is removed. Reviewers: mehdi_amini Subscribers: llvm-commits, mehdi_amini Differential Revision: http://reviews.llvm.org/D22302 llvm-svn: 275474
38 lines
738 B
LLVM
38 lines
738 B
LLVM
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
; Alias are not optimized
|
|
@linkonceodralias = linkonce_odr alias void (), void ()* @linkonceodrfuncwithalias
|
|
|
|
; Alias are not optimized
|
|
@linkoncealias = linkonce alias void (), void ()* @linkoncefuncwithalias
|
|
|
|
; Function with an alias are not optimized
|
|
define linkonce_odr void @linkonceodrfuncwithalias() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
; Function with an alias are not optimized
|
|
define linkonce void @linkoncefuncwithalias() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|
|
define linkonce_odr void @linkonceodrfunc() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
define linkonce void @linkoncefunc() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
define weak_odr void @weakodrfunc() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
define weak void @weakfunc() #0 {
|
|
entry:
|
|
ret void
|
|
}
|
|
|