diff options
| author | gingerBill <bill@gingerbill.org> | 2021-11-04 12:40:50 +0000 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-11-04 12:40:50 +0000 |
| commit | 6ded538546cca4f1e50a011a64932f7f3c784cc2 (patch) | |
| tree | 03ac73c9042cc45ab20da51a93de3f9bf6f8de0f /src/llvm_backend_general.cpp | |
| parent | 3fa7dabaa87e99386e469bd5e4badab23f89aaef (diff) | |
`@(linkage=<string>)` for procedures and variables; `@(require)` for procedures; `package runtime` linkage improvements; Subsequence improvements to `lb_run_remove_unused_function_pass`
Diffstat (limited to 'src/llvm_backend_general.cpp')
| -rw-r--r-- | src/llvm_backend_general.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index b1c1f924b..5c664f0e0 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2692,3 +2692,16 @@ lbAddr lb_add_local_generated_temp(lbProcedure *p, Type *type, i64 min_alignment lb_try_update_alignment(res.addr, cast(unsigned)min_alignment); return res; } + + +void lb_set_linkage_from_entity_flags(lbModule *m, LLVMValueRef value, u64 flags) { + if (flags & EntityFlag_CustomLinkage_Internal) { + LLVMSetLinkage(value, LLVMInternalLinkage); + } else if (flags & EntityFlag_CustomLinkage_Strong) { + LLVMSetLinkage(value, LLVMExternalLinkage); + } else if (flags & EntityFlag_CustomLinkage_Weak) { + LLVMSetLinkage(value, LLVMExternalWeakLinkage); + } else if (flags & EntityFlag_CustomLinkage_LinkOnce) { + LLVMSetLinkage(value, LLVMLinkOnceAnyLinkage); + } +} |