use crate::{ir::Attribute, Context};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Linkage {
Private,
Internal,
AvailableExternally,
LinkOnce,
Weak,
Common,
Appending,
External,
}
pub fn linkage(context: &Context, linkage: Linkage) -> Attribute {
let linkage = match linkage {
Linkage::Private => "private",
Linkage::Internal => "internal",
Linkage::AvailableExternally => "available_externally",
Linkage::LinkOnce => "link_once",
Linkage::Weak => "weak",
Linkage::Common => "common",
Linkage::Appending => "appending",
Linkage::External => "external",
};
Attribute::parse(context, &format!("#llvm.linkage<{linkage}>")).unwrap()
}