Skip to content

Commit 5f77734

Browse files
authored
[NFC] Remove explicit bitcode enumeration from BitCodeFormat.rst (#102618)
This explicit listing of the bitcodes is out of date, and had fallen out of date in the past as well. Delete the explicit listing and point users to where they can find it.
1 parent d5e9691 commit 5f77734

File tree

1 file changed

+21
-85
lines changed

1 file changed

+21
-85
lines changed

llvm/docs/BitCodeFormat.rst

Lines changed: 21 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ that has gone through a pre-link LTO pipeline). The ``.llvmbc`` section
477477
predates FatLTO support in LLVM, and may not always contain bitcode that is
478478
suitable for LTO (i.e. from ``-fembed-bitcode``). The wrapper format is useful
479479
for 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

482482
Not all tools support this format. For example, lld and the gold plugin will
483483
ignore 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
10061006
attributes with a string argument (code 4), the *value* value is similarly a
10071007
variable 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

Comments
 (0)