melior/dialect/llvm/
attributes.rs1use crate::{ir::Attribute, Context};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum Linkage {
5 Private,
6 Internal,
7 AvailableExternally,
8 LinkOnce,
9 Weak,
10 Common,
11 Appending,
12 External,
13}
14
15pub fn linkage(context: &Context, linkage: Linkage) -> Attribute {
17 let linkage = match linkage {
18 Linkage::Private => "private",
19 Linkage::Internal => "internal",
20 Linkage::AvailableExternally => "available_externally",
21 Linkage::LinkOnce => "link_once",
22 Linkage::Weak => "weak",
23 Linkage::Common => "common",
24 Linkage::Appending => "appending",
25 Linkage::External => "external",
26 };
27 Attribute::parse(context, &format!("#llvm.linkage<{linkage}>")).unwrap()
28}