@@ -1824,3 +1824,55 @@ extern "C" size_t LLVMRustEnzymeGetMaxTypeDepth() {
18241824 return 6 ; // Default fallback depth
18251825}
18261826#endif
1827+
1828+ // Statically assert that the fixed metadata kind IDs declared in
1829+ // `metadata_kind.rs` match the ones actually used by LLVM.
1830+ #define FIXED_MD_KIND (VARIANT, VALUE ) \
1831+ static_assert (::llvm::LLVMContext::VARIANT == VALUE);
1832+ // Must be kept in sync with the corresponding list in `metadata_kind.rs`.
1833+ FIXED_MD_KIND (MD_dbg, 0 )
1834+ FIXED_MD_KIND (MD_tbaa, 1 )
1835+ FIXED_MD_KIND (MD_prof, 2 )
1836+ FIXED_MD_KIND (MD_fpmath, 3 )
1837+ FIXED_MD_KIND (MD_range, 4 )
1838+ FIXED_MD_KIND (MD_tbaa_struct, 5 )
1839+ FIXED_MD_KIND (MD_invariant_load, 6 )
1840+ FIXED_MD_KIND (MD_alias_scope, 7 )
1841+ FIXED_MD_KIND (MD_noalias, 8 )
1842+ FIXED_MD_KIND (MD_nontemporal, 9 )
1843+ FIXED_MD_KIND (MD_mem_parallel_loop_access, 10 )
1844+ FIXED_MD_KIND (MD_nonnull, 11 )
1845+ FIXED_MD_KIND (MD_dereferenceable, 12 )
1846+ FIXED_MD_KIND (MD_dereferenceable_or_null, 13 )
1847+ FIXED_MD_KIND (MD_make_implicit, 14 )
1848+ FIXED_MD_KIND (MD_unpredictable, 15 )
1849+ FIXED_MD_KIND (MD_invariant_group, 16 )
1850+ FIXED_MD_KIND (MD_align, 17 )
1851+ FIXED_MD_KIND (MD_loop, 18 )
1852+ FIXED_MD_KIND (MD_type, 19 )
1853+ FIXED_MD_KIND (MD_section_prefix, 20 )
1854+ FIXED_MD_KIND (MD_absolute_symbol, 21 )
1855+ FIXED_MD_KIND (MD_associated, 22 )
1856+ FIXED_MD_KIND (MD_callees, 23 )
1857+ FIXED_MD_KIND (MD_irr_loop, 24 )
1858+ FIXED_MD_KIND (MD_access_group, 25 )
1859+ FIXED_MD_KIND (MD_callback, 26 )
1860+ FIXED_MD_KIND (MD_preserve_access_index, 27 )
1861+ FIXED_MD_KIND (MD_vcall_visibility, 28 )
1862+ FIXED_MD_KIND (MD_noundef, 29 )
1863+ FIXED_MD_KIND (MD_annotation, 30 )
1864+ FIXED_MD_KIND (MD_nosanitize, 31 )
1865+ FIXED_MD_KIND (MD_func_sanitize, 32 )
1866+ FIXED_MD_KIND (MD_exclude, 33 )
1867+ FIXED_MD_KIND (MD_memprof, 34 )
1868+ FIXED_MD_KIND (MD_callsite, 35 )
1869+ FIXED_MD_KIND (MD_kcfi_type, 36 )
1870+ FIXED_MD_KIND (MD_pcsections, 37 )
1871+ FIXED_MD_KIND (MD_DIAssignID, 38 )
1872+ FIXED_MD_KIND (MD_coro_outside_frame, 39 )
1873+ FIXED_MD_KIND (MD_mmra, 40 )
1874+ FIXED_MD_KIND (MD_noalias_addrspace, 41 )
1875+ // If some fixed metadata kinds are not present and consistent in all supported
1876+ // LLVM versions, it's fine to omit them from this list; in that case Rust-side
1877+ // code cannot declare them as fixed IDs and must look them up by name instead.
1878+ #undef FIXED_MD_KIND
0 commit comments