Read and write getresult.
authorDevang Patel <dpatel@apple.com>
Fri, 22 Feb 2008 02:49:49 +0000 (02:49 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 22 Feb 2008 02:49:49 +0000 (02:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47471 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Bitcode/LLVMBitCodes.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp

index 93a81dad72fb18b9c51de53682dc50329d4dd8e4..5ef832e187c66e79ac243bc3b546b46a3750a9b5 100644 (file)
@@ -201,7 +201,8 @@ namespace bitc {
     // This store code encodes the pointer type, rather than the value type
     // this is so information only available in the pointer type (e.g. address
     // spaces) is retained.
-    FUNC_CODE_INST_STORE2      = 24 // STORE:      [ptrty,ptr,val, align, vol]
+    FUNC_CODE_INST_STORE2      = 24, // STORE:      [ptrty,ptr,val, align, vol]
+    FUNC_CODE_INST_GETRESULT   = 25  // GETRESULT:  [ty, opval, n]
   };
 } // End bitc namespace
 } // End llvm namespace
index ec71ba4e9c6822329bd951964d2664be3abf6676..24bf978a2b009872432cb48de11bd34faf4e9f10 100644 (file)
@@ -1325,6 +1325,16 @@ bool BitcodeReader::ParseFunctionBody(Function *F) {
         I = new ICmpInst((ICmpInst::Predicate)Record[OpNum], LHS, RHS);
       break;
     }
+    case bitc::FUNC_CODE_INST_GETRESULT: { // GETRESULT: [ty, val, n]
+      if (Record.size() != 2)
+        return Error("Invalid GETRESULT record");
+      unsigned OpNum = 0;
+      Value *Op;
+      getValueTypePair(Record, OpNum, NextValueNo, Op);
+      unsigned Index = Record[1];
+      I = new GetResultInst(Op, Index);
+      break;
+    }
     
     case bitc::FUNC_CODE_INST_RET: // RET: [opty,opval<optional>]
       if (Record.empty()) {
index fe013e8156992637b48f096a795a23b3c55c20be..306433b1b52cd0d5b3ad63f6170aa13c8c486d74 100644 (file)
@@ -744,6 +744,11 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
     Vals.push_back(VE.getValueID(I.getOperand(1)));
     Vals.push_back(cast<CmpInst>(I).getPredicate());
     break;
+  case Instruction::GetResult:
+    Code = bitc::FUNC_CODE_INST_GETRESULT;
+    PushValueAndType(I.getOperand(0), InstID, Vals, VE);
+    Vals.push_back(Log2_32(cast<GetResultInst>(I).getIndex())+1);
+    break;
 
   case Instruction::Ret:
     Code = bitc::FUNC_CODE_INST_RET;