diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index e8e1afd..29d0a71 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -318,7 +318,12 @@
       throw std::string("ParseFunction: Error reading from buffer.");
     if (LinkageType & ~0x3) 
       throw std::string("Invalid linkage type for Function.");
-    Linkage = (GlobalValue::LinkageTypes)LinkageType;
+    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;
+    }
   } else {
     // We used to only support two linkage models: internal and external
     unsigned isInternal;
@@ -436,7 +441,12 @@
       // VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
       // bit2,3 = Linkage, bit4+ = slot#
       SlotNo = VarType >> 4;
-      Linkage = (GlobalValue::LinkageTypes)((VarType >> 2) & 3);
+      switch ((VarType >> 2) & 3) {
+      case 0: Linkage = GlobalValue::ExternalLinkage;  break;
+      case 1: Linkage = GlobalValue::WeakLinkage;      break;
+      case 2: Linkage = GlobalValue::AppendingLinkage; break;
+      case 3: Linkage = GlobalValue::InternalLinkage;  break;
+      }
     } else {
       // VarType Fields: bit0 = isConstant, bit1 = hasInitializer,
       // bit2 = isInternal, bit3+ = slot#
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp
index 413fd29..1e6d63a 100644
--- a/lib/Bytecode/Writer/Writer.cpp
+++ b/lib/Bytecode/Writer/Writer.cpp
@@ -158,6 +158,17 @@
     }
 }
 
+static unsigned getEncodedLinkage(const GlobalValue *GV) {
+  switch (GV->getLinkage()) {
+  default: assert(0 && "Invalid linkage!");
+  case GlobalValue::ExternalLinkage:  return 0;
+  case GlobalValue::LinkOnceLinkage:  return 1;
+  case GlobalValue::WeakLinkage:      return 1;
+  case GlobalValue::AppendingLinkage: return 2;
+  case GlobalValue::InternalLinkage:  return 3;
+  }
+}
+
 void BytecodeWriter::outputModuleInfoBlock(const Module *M) {
   BytecodeBlock ModuleInfoBlock(BytecodeFormat::ModuleGlobalInfo, Out);
   
@@ -168,7 +179,7 @@
 
     // Fields: bit0 = isConstant, bit1 = hasInitializer, bit2,3=Linkage,
     // bit4+ = Slot # for type
-    unsigned oSlot = ((unsigned)Slot << 4) | ((unsigned)I->getLinkage() << 2) |
+    unsigned oSlot = ((unsigned)Slot << 4) | (getEncodedLinkage(I) << 2) |
                      (I->hasInitializer() << 1) | I->isConstant();
     output_vbr(oSlot, Out);
 
@@ -195,7 +206,7 @@
 
 void BytecodeWriter::outputFunction(const Function *F) {
   BytecodeBlock FunctionBlock(BytecodeFormat::Function, Out);
-  output_vbr((unsigned)F->getLinkage(), Out);
+  output_vbr(getEncodedLinkage(F), Out);
   // Only output the constant pool and other goodies if needed...
   if (!F->isExternal()) {
 
