Alex Brachet 443e2a10f6 Reland "[PGO] Make emitted symbols hidden"
This was reverted because it was breaking when targeting Darwin which
tried to export these symbols which are now hidden. It should be safe
to just stop attempting to export these symbols in the clang driver,
though Apple folks will need to change their TAPI allow list described
in the commit where these symbols were originally exported
f538018562

Then reverted again because it broke tests on MacOS, they should be
fixed now.

Bug: https://github.com/llvm/llvm-project/issues/58265

Differential Revision: https://reviews.llvm.org/D135340
2022-10-26 17:13:05 +00:00

33 lines
1.2 KiB
LLVM

; REQUIRES: x86-registered-target
; RUN: opt -passes='thinlto-pre-link<O2>' --cs-profilegen-file=alloc -cspgo-kind=cspgo-instr-gen-pipeline -module-summary %s -o %t.bc
; RUN: llvm-dis %t.bc -o - | FileCheck %s --check-prefix=IRPGOPRE
;; Symbol __llvm_profile_filename and __llvm_profile_raw_version are non-prevailing here.
; RUN: llvm-lto2 run -lto-cspgo-profile-file=alloc -lto-cspgo-gen -save-temps -o %t %t.bc \
; RUN: -r=%t.bc,f,px \
; RUN: -r=%t.bc,__llvm_profile_filename,x \
; RUN: -r=%t.bc,__llvm_profile_raw_version,x
; RUN: llvm-dis %t.0.0.preopt.bc -o - | FileCheck %s --check-prefix=IRPGOBE
;; Before LTO, we should have the __llvm_profile_raw_version definition.
; IRPGOPRE: @__llvm_profile_raw_version = hidden constant i64
;; Non-prevailing __llvm_profile_raw_version is discarded by LTO. Ensure the
;; declaration is retained.
; IRPGOBE: @__llvm_profile_raw_version = external hidden constant i64
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
$f = comdat any
; Function Attrs: nofree norecurse nosync nounwind readnone uwtable willreturn mustprogress
define i32 @f() {
entry:
ret i32 1
}
!llvm.module.flags = !{!0}
!0 = !{i32 1, !"ThinLTO", i32 0}