Bytecode File Format Changes:

- File format version number bumped to 4
- Writer will now align nothing
- Reader now only expects alignment for version 3 or earlier


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15875 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2004-08-17 07:45:14 +00:00
parent cf549e1f32
commit 38d54be85b
4 changed files with 39 additions and 38 deletions

View File

@@ -72,12 +72,14 @@ inline void BytecodeReader::checkPastBlockEnd(const char * block_name) {
/// Align the buffer position to a 32 bit boundary
inline void BytecodeReader::align32() {
BufPtr Save = At;
At = (const unsigned char *)((unsigned long)(At+3) & (~3UL));
if (At > Save)
if (Handler) Handler->handleAlignment(At - Save);
if (At > BlockEnd)
error("Ran out of data while aligning!");
if (hasAlignment) {
BufPtr Save = At;
At = (const unsigned char *)((unsigned long)(At+3) & (~3UL));
if (At > Save)
if (Handler) Handler->handleAlignment(At - Save);
if (At > BlockEnd)
error("Ran out of data while aligning!");
}
}
/// Read a whole unsigned integer
@@ -1886,6 +1888,7 @@ void BytecodeReader::ParseVersionInfo() {
hasLongBlockHeaders = false;
has32BitTypes = false;
hasNoDependentLibraries = false;
hasAlignment = false;
switch (RevisionNum) {
case 0: // LLVM 1.0, 1.1 release version
@@ -1937,6 +1940,14 @@ void BytecodeReader::ParseVersionInfo() {
// FALL THROUGH
case 3: // LLVM 1.3 release version
/// LLVM 1.3 and earlier caused alignment bytes to be written on some block
/// boundaries and at the end of some strings. In extreme cases (e.g. lots
/// of GEP references to a constant array), this can increase the file size
/// by 30% or more. In version 1.4 alignment is done away with completely.
hasAlignment = true;
// FALL THROUGH
case 4:
break;
default: