diff options
| author | bors <bors@rust-lang.org> | 2021-04-06 02:09:01 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-04-06 02:09:01 +0000 |
| commit | 0c7d4effd71f826abb9651419c316b9b57b8ac97 (patch) | |
| tree | f8eadbfde709194baee1cbb5979f21a166568cce /compiler/rustc_codegen_llvm/src/llvm | |
| parent | 8e6b478a5a146ad77ae4340ce379e1674c35ad69 (diff) | |
| parent | 2f000a78bf615b35c4837f920fb6adcad4848351 (diff) | |
| download | rust-0c7d4effd71f826abb9651419c316b9b57b8ac97.tar.gz rust-0c7d4effd71f826abb9651419c316b9b57b8ac97.zip | |
Auto merge of #83592 - nagisa:nagisa/dso_local, r=davidtwco
Set dso_local for hidden, private and local items This should probably have no real effect in most cases, as e.g. `hidden` visibility already implies `dso_local` (or at least LLVM IR does not preserve the `dso_local` setting if the item is already `hidden`), but it should fix `-Crelocation-model=static` and improve codegen in executables. Note that this PR does not exhaustively port the logic in [clang], only the portion that is necessary to fix a regression from LLVM 12 that relates to `-Crelocation_model=static`. Fixes #83335 [clang]: https://github.com/llvm/llvm-project/blob/3001d080c813da20b329303bf8f45451480e5905/clang/lib/CodeGen/CodeGenModule.cpp#L945-L1039
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs index af9d3d2dc26..70f78c07c65 100644 --- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs +++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs @@ -1013,6 +1013,7 @@ extern "C" { pub fn LLVMSetSection(Global: &Value, Section: *const c_char); pub fn LLVMRustGetVisibility(Global: &Value) -> Visibility; pub fn LLVMRustSetVisibility(Global: &Value, Viz: Visibility); + pub fn LLVMRustSetDSOLocal(Global: &Value, is_dso_local: bool); pub fn LLVMGetAlignment(Global: &Value) -> c_uint; pub fn LLVMSetAlignment(Global: &Value, Bytes: c_uint); pub fn LLVMSetDLLStorageClass(V: &Value, C: DLLStorageClass); |
