rust/compiler/rustc_codegen_llvm/src/llvm
Matthias Krüger e0d74c0667
Rollup merge of #135156 - Zalathar:debuginfo-flags, r=cuviper
Make our `DIFlags` match `LLVMDIFlags` in the LLVM-C API

In order to be able to use a mixture of LLVM-C and C++ bindings for debuginfo, our Rust-side `DIFlags` needs to have the same layout as LLVM-C's `LLVMDIFlags`, and we also need to be able to convert it to the `DIFlags` accepted by LLVM's C++ API.

Internally, LLVM converts between the two types with a simple cast. We can't necessarily rely on that always being true, and LLVM doesn't expose a conversion function, so we have two potential options:
- Convert each bit/subvalue individually
- Statically assert that doing a cast is actually fine

As long as both types do remain the same under the hood (which seems likely), the static-assert-and-cast approach is easier and faster. If the static assertions ever start failing against some future version of LLVM, we'll have to switch over to the convert-each-subvalue approach, which is a bit more error-prone.

---

Extracted from #134009, though this PR ended up choosing the static-assert-and-cast approach over the convert-each-subvalue approach.
2025-01-22 19:29:39 +01:00
..
archive_ro.rs Reformat use declarations. 2024-07-29 08:26:52 +10:00
diagnostic.rs Pass end position of span through inline ASM cookie 2024-11-26 13:00:08 +00:00
enzyme_ffi.rs upstream rustc_codegen_llvm changes for enzyme/autodiff 2025-01-01 21:42:45 +01:00
ffi.rs Rollup merge of #135156 - Zalathar:debuginfo-flags, r=cuviper 2025-01-22 19:29:39 +01:00
mod.rs upstream rustc_codegen_llvm changes for enzyme/autodiff 2025-01-01 21:42:45 +01:00