(
&self,
cv: &'ll Value,
align: Align,
kind: Option<&str>,
)
| 276 | } |
| 277 | |
| 278 | pub(crate) fn static_addr_of_mut( |
| 279 | &self, |
| 280 | cv: &'ll Value, |
| 281 | align: Align, |
| 282 | kind: Option<&str>, |
| 283 | ) -> &'ll Value { |
| 284 | unsafe { |
| 285 | // TODO(RDambrosio016): replace this with latest rustc's handling when we use llvm 13 |
| 286 | let name = self.generate_local_symbol_name(kind.unwrap_or("private")); |
| 287 | let gv = self |
| 288 | .define_global(&name[..], self.val_ty(cv), AddressSpace::DATA) |
| 289 | .unwrap_or_else(|| bug!("symbol `{}` is already defined", name)); |
| 290 | llvm::LLVMRustSetLinkage(gv, llvm::Linkage::PrivateLinkage); |
| 291 | llvm::LLVMSetInitializer(gv, cv); |
| 292 | llvm::LLVMSetAlignment(gv, align.bytes() as c_uint); |
| 293 | llvm::SetUnnamedAddress(gv, llvm::UnnamedAddr::Global); |
| 294 | gv |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | pub(crate) fn get_static(&self, def_id: DefId) -> &'ll Value { |
| 299 | let instance = Instance::mono(self.tcx, def_id); |
no test coverage detected