From 37c529ae680633af2d6b87e7f8cf163ff343df76 Mon Sep 17 00:00:00 2001
From: Chris Lattner
The PARAMATTR_BLOCK block (id 9) ... -
+The PARAMATTR_BLOCK block (id 9) contains a table of +entries describing the attributes of function parameters. These +entries are referenced by 1-based index in the paramattr field +of module block FUNCTION +records, or within the attr field of function block INST_INVOKE and INST_CALL records.
+ +Entries within PARAMATTR_BLOCK are constructed to ensure +that each is unique (i.e., no two indicies represent equivalent +attribute lists).
[ENTRY, paramidx0, attr0, paramidx1, attr1...]
-The ENTRY record (code 1) ... +
The ENTRY record (code 1) contains an even number of +values describing a unique set of function parameter attributes. Each +paramidx value indicates which set of attributes is +represented, with 0 representing the return value attributes, +0xFFFFFFFF representing function attributes, and other values +representing 1-based function parameters. Each attr value is a +bitmap with the following interpretation:
+ +The TYPE_BLOCK block (id 10) ... +
The TYPE_BLOCK block (id 10) contains records which +constitute a table of type operator entries used to represent types +referenced within an LLVM module. Each record (with the exception of +NUMENTRY) generates a +single type table entry, which may be referenced by 0-based index from +instructions, constants, metadata, type symbol table entries, or other +type operator records.
+Entries within TYPE_BLOCK are constructed to ensure that +each entry is unique (i.e., no two indicies represent structurally +equivalent types).
+[NUMENTRY, numentries]
+ +The NUMENTRY record (code 1) contains a single value which +indicates the total number of type code entries in the type table of +the module. If present, NUMENTRY should be the first record +in the block. +
+[VOID]
+ +The VOID record (code 2) adds a void type to the +type table. +
+[FLOAT]
+ +The FLOAT record (code 3) adds a float (32-bit +floating point) type to the type table. +
+[DOUBLE]
+ +The DOUBLE record (code 4) adds a double (64-bit +floating point) type to the type table. +
+[LABEL]
+ +The LABEL record (code 5) adds a label type to +the type table. +
+[OPAQUE]
+ +The OPAQUE record (code 6) adds an opaque type to +the type table. Note that distinct opaque types are not +unified. +
+[INTEGER, width]
+ +The INTEGER record (code 7) adds an integer type to the +type table. The single width field indicates the width of the +integer type. +
+[POINTER, pointee type, address space]
+ +The POINTER record (code 8) adds a pointer type to the +type table. The operand fields are
+ +[FUNCTION, vararg, ignored, retty, ...paramty... ]
+ +The FUNCTION record (code 9) adds a function type to the +type table. The operand fields are
+ +[STRUCT, ispacked, ...eltty...]
+ +The STRUCT record (code 10) adds a struct type to the +type table. The operand fields are
+ +[ARRAY, numelts, eltty]
+ +The ARRAY record (code 11) adds an array type to the type +table. The operand fields are
+ +[VECTOR, numelts, eltty]
+ +The VECTOR record (code 12) adds a vector type to the type +table. The operand fields are
+ +[X86_FP80]
+ +The X86_FP80 record (code 13) adds an x86_fp80 (80-bit +floating point) type to the type table. +
+[FP128]
+ +The FP128 record (code 14) adds an fp128 (128-bit +floating point) type to the type table. +
+[PPC_FP128]
+ +The PPC_FP128 record (code 15) adds a ppc_fp128 +(128-bit floating point) type to the type table. +
+[METADATA]
+ +The METADATA record (code 16) adds a metadata +type to the type table. +
+[UNION, ...eltty...]
+ +The UNION record (code 17) adds a union type to +the type table. The eltty operand fields are zero or more type +indices representing the element types of the union. +
+ +The TYPE_SYMTAB_BLOCK block (id 13) ... +
The TYPE_SYMTAB_BLOCK block (id 13) contains entries which +map between module-level named types and their corresponding type +indices.
[ENTRY, typeid, ...string...]
+ +The ENTRY record (code 1) contains a variable number of +values, with the first giving the type index of the designated type, +and the remaining values giving the character codes of the type +name. Each entry corresponds to a single named type. +
+