aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/Path.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2021-06-02 16:49:54 -0700
committerFangrui Song <i@maskray.me>2021-06-02 16:49:54 -0700
commit87c43f3aa99d778755c7f5420e955885f855ecad (patch)
treea9152f896dc72b9d6b3e920b95181e112f9acbcc /llvm/lib/Support/Path.cpp
parenteffb87dfa810a28e763f914fe3e6e984782cc846 (diff)
downloadllvm-87c43f3aa99d778755c7f5420e955885f855ecad.zip
llvm-87c43f3aa99d778755c7f5420e955885f855ecad.tar.gz
llvm-87c43f3aa99d778755c7f5420e955885f855ecad.tar.bz2
[InstrProfiling] Delete linkage/visibility toggling for Windows
The linkage/visibility of `__profn_*` variables are derived from the profiled functions. extern_weak => linkonce available_externally => linkonce_odr internal => private extern => private _ => unchanged The linkage/visibility of `__profc_*`/`__profd_*` variables are derived from `__profn_*` with linkage/visibility wrestling for Windows. The changes can be folded to the following without changing semantics. ``` if (TT.isOSBinFormatCOFF() && !NeedComdat) { Linkage = GlobalValue::InternalLinkage; Visibility = GlobalValue::DefaultVisibility; } ``` That said, I think we can just delete the code block. An extern/internal function will now use private `__profc_*`/`__profd_*` variables, instead of internal ones. This saves some symbol table entries. A non-comdat {linkonce,weak}_odr function will now use hidden external `__profc_*`/`__profd_*` variables instead of internal ones. There is potential object file size increase because such symbols need `/INCLUDE:` directives. However such non-comdat functions are rare (note that non-comdat weak definitions don't prevent duplicate definition error). The behavior changes match ELF. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D103355
Diffstat (limited to 'llvm/lib/Support/Path.cpp')
0 files changed, 0 insertions, 0 deletions