[llvm-commits] CVS: llvm/lib/Bytecode/Reader/Reader.cpp ReaderInternals.h
Chris Lattner
lattner at cs.uiuc.edu
Wed Jan 14 10:45:02 PST 2004
Changes in directory llvm/lib/Bytecode/Reader:
Reader.cpp updated: 1.92 -> 1.93
ReaderInternals.h updated: 1.70 -> 1.71
---
Log message:
Remove support for the pre-1.0 bytecode version #1. This will become
the bytecode revision generated by LLVM 1.2.
---
Diffs of the changes: (+34 -60)
Index: llvm/lib/Bytecode/Reader/Reader.cpp
diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.92 llvm/lib/Bytecode/Reader/Reader.cpp:1.93
--- llvm/lib/Bytecode/Reader/Reader.cpp:1.92 Tue Dec 30 01:55:21 2003
+++ llvm/lib/Bytecode/Reader/Reader.cpp Wed Jan 14 10:44:44 2004
@@ -317,27 +317,18 @@
GlobalValue::LinkageTypes Linkage = GlobalValue::ExternalLinkage;
- if (!hasInternalMarkerOnly) {
- // We didn't support weak linkage explicitly.
- unsigned LinkageType;
- if (read_vbr(Buf, EndBuf, LinkageType))
- throw std::string("ParseFunction: Error reading from buffer.");
- if ((!hasExtendedLinkageSpecs && LinkageType > 3) ||
- ( hasExtendedLinkageSpecs && LinkageType > 4))
- throw std::string("Invalid linkage type for Function.");
- switch (LinkageType) {
- case 0: Linkage = GlobalValue::ExternalLinkage; break;
- case 1: Linkage = GlobalValue::WeakLinkage; break;
- case 2: Linkage = GlobalValue::AppendingLinkage; break;
- case 3: Linkage = GlobalValue::InternalLinkage; break;
- case 4: Linkage = GlobalValue::LinkOnceLinkage; break;
- }
- } else {
- // We used to only support two linkage models: internal and external
- unsigned isInternal;
- if (read_vbr(Buf, EndBuf, isInternal))
- throw std::string("ParseFunction: Error reading from buffer.");
- if (isInternal) Linkage = GlobalValue::InternalLinkage;
+ unsigned LinkageType;
+ if (read_vbr(Buf, EndBuf, LinkageType))
+ throw std::string("ParseFunction: Error reading from buffer.");
+ if ((!hasExtendedLinkageSpecs && LinkageType > 3) ||
+ ( hasExtendedLinkageSpecs && LinkageType > 4))
+ throw std::string("Invalid linkage type for Function.");
+ switch (LinkageType) {
+ case 0: Linkage = GlobalValue::ExternalLinkage; break;
+ case 1: Linkage = GlobalValue::WeakLinkage; break;
+ case 2: Linkage = GlobalValue::AppendingLinkage; break;
+ case 3: Linkage = GlobalValue::InternalLinkage; break;
+ case 4: Linkage = GlobalValue::LinkOnceLinkage; break;
}
F->setLinkage(Linkage);
@@ -451,33 +442,25 @@
unsigned SlotNo;
GlobalValue::LinkageTypes Linkage;
- if (!hasInternalMarkerOnly) {
- unsigned LinkageID;
- if (hasExtendedLinkageSpecs) {
- // VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
- // bit2,3,4 = Linkage, bit4+ = slot#
- SlotNo = VarType >> 5;
- LinkageID = (VarType >> 2) & 7;
- } else {
- // VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
- // bit2,3 = Linkage, bit4+ = slot#
- SlotNo = VarType >> 4;
- LinkageID = (VarType >> 2) & 3;
- }
- switch (LinkageID) {
- default: assert(0 && "Unknown linkage type!");
- case 0: Linkage = GlobalValue::ExternalLinkage; break;
- case 1: Linkage = GlobalValue::WeakLinkage; break;
- case 2: Linkage = GlobalValue::AppendingLinkage; break;
- case 3: Linkage = GlobalValue::InternalLinkage; break;
- case 4: Linkage = GlobalValue::LinkOnceLinkage; break;
- }
+ unsigned LinkageID;
+ if (hasExtendedLinkageSpecs) {
+ // VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
+ // bit2,3,4 = Linkage, bit4+ = slot#
+ SlotNo = VarType >> 5;
+ LinkageID = (VarType >> 2) & 7;
} else {
// VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
- // bit2 = isInternal, bit3+ = slot#
- SlotNo = VarType >> 3;
- Linkage = (VarType & 4) ? GlobalValue::InternalLinkage :
- GlobalValue::ExternalLinkage;
+ // bit2,3 = Linkage, bit4+ = slot#
+ SlotNo = VarType >> 4;
+ LinkageID = (VarType >> 2) & 3;
+ }
+ switch (LinkageID) {
+ default: assert(0 && "Unknown linkage type!");
+ case 0: Linkage = GlobalValue::ExternalLinkage; break;
+ case 1: Linkage = GlobalValue::WeakLinkage; break;
+ case 2: Linkage = GlobalValue::AppendingLinkage; break;
+ case 3: Linkage = GlobalValue::InternalLinkage; break;
+ case 4: Linkage = GlobalValue::LinkOnceLinkage; break;
}
const Type *Ty = getType(SlotNo);
@@ -562,34 +545,26 @@
RevisionNum = Version >> 4;
// Default values for the current bytecode version
- hasInternalMarkerOnly = false;
hasExtendedLinkageSpecs = true;
hasOldStyleVarargs = false;
hasVarArgCallPadding = false;
FirstDerivedTyID = 14;
switch (RevisionNum) {
- case 1: // LLVM pre-1.0 release: will be deleted on the next rev
- // Version #1 has four bit fields: isBigEndian, hasLongPointers,
- // hasNoEndianness, and hasNoPointerSize.
- hasInternalMarkerOnly = true;
- hasExtendedLinkageSpecs = false;
- hasOldStyleVarargs = true;
- hasVarArgCallPadding = true;
- break;
- case 2: // LLVM pre-1.0 release:
+ case 2: // LLVM pre-1.0 release: will be deleted on the next rev
// Version #2 added information about all 4 linkage types instead of just
// having internal and external.
hasExtendedLinkageSpecs = false;
hasOldStyleVarargs = true;
hasVarArgCallPadding = true;
break;
- case 0: // LLVM 1.0 release version
+ 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.
-
- // FIXME: densify the encoding!
break;
+ case 1: // LLVM 1.2 release version
+ break;
+
default:
throw std::string("Unknown bytecode version number!");
}
Index: llvm/lib/Bytecode/Reader/ReaderInternals.h
diff -u llvm/lib/Bytecode/Reader/ReaderInternals.h:1.70 llvm/lib/Bytecode/Reader/ReaderInternals.h:1.71
--- llvm/lib/Bytecode/Reader/ReaderInternals.h:1.70 Sat Jan 10 13:00:15 2004
+++ llvm/lib/Bytecode/Reader/ReaderInternals.h Wed Jan 14 10:44:44 2004
@@ -91,7 +91,6 @@
// Information about the module, extracted from the bytecode revision number.
unsigned char RevisionNum; // The rev # itself
unsigned char FirstDerivedTyID; // First variable index to use for type
- bool hasInternalMarkerOnly; // Only types of linkage are intern/external
bool hasExtendedLinkageSpecs; // Supports more than 4 linkage types
bool hasOldStyleVarargs; // Has old version of varargs intrinsics?
bool hasVarArgCallPadding; // Bytecode has extra padding in vararg call
More information about the llvm-commits
mailing list