aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Reader/Reader.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-01-15 17:55:01 +0000
committerChris Lattner <sabre@nondot.org>2004-01-15 17:55:01 +0000
commit44d0eebc1371b431396a84153159b326c7d4e1f9 (patch)
tree2c0bdf8b3e92f60675b198a1ca28d1ce66909f04 /lib/Bytecode/Reader/Reader.cpp
parent570fb1cbd83eaddce4e14bfe2c26d43bd859c993 (diff)
Fix PR73
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10875 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Reader/Reader.cpp')
-rw-r--r--lib/Bytecode/Reader/Reader.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 508fb7730a..bc84135a96 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -499,7 +499,8 @@ void BytecodeParser::ParseModuleGlobalInfo(const unsigned char *&Buf,
BCR_TRACE(2, "Function of type: " << Ty << "\n");
}
- align32(Buf, End);
+ if (hasInconsistentModuleGlobalInfo)
+ align32(Buf, End);
// Now that the function signature list is set up, reverse it so that we can
// remove elements efficiently from the back of the vector.
@@ -530,6 +531,7 @@ void BytecodeParser::ParseVersionInfo(const unsigned char *&Buf,
hasExtendedLinkageSpecs = true;
hasOldStyleVarargs = false;
hasVarArgCallPadding = false;
+ hasInconsistentModuleGlobalInfo = false;
FirstDerivedTyID = 14;
switch (RevisionNum) {
@@ -539,15 +541,22 @@ void BytecodeParser::ParseVersionInfo(const unsigned char *&Buf,
hasExtendedLinkageSpecs = false;
hasOldStyleVarargs = true;
hasVarArgCallPadding = true;
+ hasInconsistentModuleGlobalInfo = true;
+
break;
case 0: // LLVM 1.0, 1.1 release version
// Compared to rev #2, we added support for weak linkage, a more dense
// encoding, and better varargs support.
// Base LLVM 1.0 bytecode format.
+ hasInconsistentModuleGlobalInfo = true;
break;
case 1: // LLVM 1.2 release version
// LLVM 1.2 added explicit support for emitting strings efficiently.
+
+ // Also, it fixed the problem where the size of the ModuleGlobalInfo block
+ // included the size for the alignment at the end, where the rest of the
+ // blocks did not.
break;
default: