@@ -477,7 +477,7 @@ that has gone through a pre-link LTO pipeline). The ``.llvmbc`` section
477477predates FatLTO support in LLVM, and may not always contain bitcode that is
478478suitable for LTO (i.e. from ``-fembed-bitcode ``). The wrapper format is useful
479479for accommodating LTO in compilation pipelines where intermediate objects must
480- be native object files which contain metadata in other sections.
480+ be native object files which contain metadata in other sections.
481481
482482Not all tools support this format. For example, lld and the gold plugin will
483483ignore the ``.llvmbc `` section when linking object files, but can use
@@ -1006,93 +1006,29 @@ number of values representing the bytes of a null-terminated string. For
10061006attributes with a string argument (code 4), the *value * value is similarly a
10071007variable number of values representing the bytes of a null-terminated string.
10081008
1009- The integer codes are mapped to well-known attributes as follows.
1009+ The integer codes are mapped to attributes as described in the
1010+ ``AttributeKindCodes `` enumeration in the file `LLVMBitCodes.h
1011+ <https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/Bitcode/LLVMBitCodes.h> `_.
1012+
1013+ For example:
1014+
1015+ ::
1016+
1017+ enum AttributeKindCodes {
1018+ // = 0 is unused
1019+ ATTR_KIND_ALIGNMENT = 1,
1020+ ATTR_KIND_ALWAYS_INLINE = 2,
1021+ ...
1022+ }
1023+
1024+ Correspond to:
10101025
10111026* code 1: ``align(<n>) ``
10121027* code 2: ``alwaysinline ``
1013- * code 3: ``byval ``
1014- * code 4: ``inlinehint ``
1015- * code 5: ``inreg ``
1016- * code 6: ``minsize ``
1017- * code 7: ``naked ``
1018- * code 8: ``nest ``
1019- * code 9: ``noalias ``
1020- * code 10: ``nobuiltin ``
1021- * code 11: ``nocapture ``
1022- * code 12: ``nodeduplicate ``
1023- * code 13: ``noimplicitfloat ``
1024- * code 14: ``noinline ``
1025- * code 15: ``nonlazybind ``
1026- * code 16: ``noredzone ``
1027- * code 17: ``noreturn ``
1028- * code 18: ``nounwind ``
1029- * code 19: ``optsize ``
1030- * code 20: ``readnone ``
1031- * code 21: ``readonly ``
1032- * code 22: ``returned ``
1033- * code 23: ``returns_twice ``
1034- * code 24: ``signext ``
1035- * code 25: ``alignstack(<n>) ``
1036- * code 26: ``ssp ``
1037- * code 27: ``sspreq ``
1038- * code 28: ``sspstrong ``
1039- * code 29: ``sret ``
1040- * code 30: ``sanitize_address ``
1041- * code 31: ``sanitize_thread ``
1042- * code 32: ``sanitize_memory ``
1043- * code 33: ``uwtable ``
1044- * code 34: ``zeroext ``
1045- * code 35: ``builtin ``
1046- * code 36: ``cold ``
1047- * code 37: ``optnone ``
1048- * code 38: ``inalloca ``
1049- * code 39: ``nonnull ``
1050- * code 40: ``jumptable ``
1051- * code 41: ``dereferenceable(<n>) ``
1052- * code 42: ``dereferenceable_or_null(<n>) ``
1053- * code 43: ``convergent ``
1054- * code 44: ``safestack ``
1055- * code 45: ``argmemonly ``
1056- * code 46: ``swiftself ``
1057- * code 47: ``swifterror ``
1058- * code 48: ``norecurse ``
1059- * code 49: ``inaccessiblememonly ``
1060- * code 50: ``inaccessiblememonly_or_argmemonly ``
1061- * code 51: ``allocsize(<EltSizeParam>[, <NumEltsParam>]) ``
1062- * code 52: ``writeonly ``
1063- * code 53: ``speculatable ``
1064- * code 54: ``strictfp ``
1065- * code 55: ``sanitize_hwaddress ``
1066- * code 56: ``nocf_check ``
1067- * code 57: ``optforfuzzing ``
1068- * code 58: ``shadowcallstack ``
1069- * code 59: ``speculative_load_hardening ``
1070- * code 60: ``immarg ``
1071- * code 61: ``willreturn ``
1072- * code 62: ``nofree ``
1073- * code 63: ``nosync ``
1074- * code 64: ``sanitize_memtag ``
1075- * code 65: ``preallocated ``
1076- * code 66: ``no_merge ``
1077- * code 67: ``null_pointer_is_valid ``
1078- * code 68: ``noundef ``
1079- * code 69: ``byref ``
1080- * code 70: ``mustprogress ``
1081- * code 74: ``vscale_range(<Min>[, <Max>]) ``
1082- * code 75: ``swiftasync ``
1083- * code 76: ``nosanitize_coverage ``
1084- * code 77: ``elementtype ``
1085- * code 78: ``disable_sanitizer_instrumentation ``
1086- * code 79: ``nosanitize_bounds ``
1087- * code 80: ``allocalign ``
1088- * code 81: ``allocptr ``
1089- * code 82: ``allockind ``
1090- * code 83: ``presplitcoroutine ``
1091- * code 84: ``fn_ret_thunk_extern ``
1092- * code 85: ``skipprofile ``
1093- * code 86: ``memory ``
1094- * code 87: ``nofpclass ``
1095- * code 88: ``optdebug ``
1028+
1029+ The mappings between the enumeration and the attribute name string may be found
1030+ in the file `Attributes.td
1031+ <https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/IR/Attributes.td> `_.
10961032
10971033.. note ::
10981034 The ``allocsize `` attribute has a special encoding for its arguments. Its two
0 commit comments