llvm.org GIT mirror llvm / d753fbc
Describe the recent changes to the bytecode format for PR761. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33586 91177308-0d34-0410-b5e6-96231b3b80d8 Owen Anderson 13 years ago
1 changed file(s) with 13 addition(s) and 40 deletion(s). Raw diff Collapse all Expand all
699699
700700
701701
702

The format information field is encoded into a uint32_vbr

703 as shown in the following table.

704
705
706
707 Type
708 Description
709
710
711 bit(0)
712 Target is big endian?
713
714
715 bit(1)
716 On target pointers are 64-bit?
717
718
719 bit(2)
720 Target has no endianess?
721
722
723 bit(3)
724 Target has no pointer size?
725
726
727 bit(4-31)
728 Bytecode format version
729
730
731
732

733 Of particular note, the bytecode format number is simply a 28-bit
702

The format information field is encoded into a uint32_vbr.

703
704

Of particular note, the bytecode format number is simply a 32-bit

734705 monotonically increasing integer that identifies the version of the bytecode
735706 format (which is not directly related to the LLVM release number). The
736707 bytecode versions defined so far are (note that this document only
737 describes the latest version, 1.3):

708 describes the latest version, 2.0):

738709
739710
  • #0: LLVM 1.0 & 1.1
  • 740711
  • #1: LLVM 1.2
  • 741712
  • #2: LLVM 1.2.5 (not released)
  • 742713
  • #3: LLVM 1.3
  • 743714
  • #4: LLVM 1.3.x (not released)
  • 744
  • #5: LLVM 1.4 and newer
  • 715
  • #5: LLVM 1.4 through 1.8
  • 716
  • #6: LLVM 1.9
  • 717
  • #7: LLVM 2.0 and newer
  • 745718
    746

    Note that we plan to eventually expand the target description

    747 capabilities
    748 of bytecode files to target
    749 triples.
    750

    751719
    752720
    753721
    992960 string
    993961 The target
    994962 triple for the module (blank means no target triple specified, i.e. a
    995 platform independent module).
    963 platform-independent module).
    964
    965
    966 string
    967 The data layout string describing the endianness, pointer size, and
    968 type alignments for which the module was written (blank means no data layout specified, i.e. a platform-independent module).
    996969
    997970
    998971 llist(string)