@(linkage=<string>) for procedures and variables; @(require) for procedures; package runtime linkage improvements; Subsequence improvements to lb_run_remove_unused_function_pass

This commit is contained in:
gingerBill
2021-11-04 12:40:50 +00:00
parent 3fa7dabaa8
commit 6ded538546
15 changed files with 138 additions and 56 deletions
+13
View File
@@ -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);
}
}