[llvm-commits] [Patch] Resume Instruction
    Chris Lattner 
    clattner at apple.com
       
    Sat Jul 30 10:16:32 PDT 2011
    
    
  
On Jul 29, 2011, at 11:41 PM, Bill Wendling wrote:
> This patch defines the 'resume' instruction and includes parsing of IR and bitcode.
> 
> Please review.
+class ResumeInst : public TerminatorInst {
+  ResumeInst(const ResumeInst &RI);
+
+  explicit ResumeInst(LLVMContext &C, Value *Exn, Instruction *InsertBefore=0);
+  ResumeInst(LLVMContext &C, Value *Exn, BasicBlock *InsertAtEnd);
Exn is required, right?  (I missed it or this wasn't clear in your langref patch, please clarify it there if needed).  Please remove the Context arguments from these and the ::Create methods.
+  Value *getResumeValue() const { return Op<0>(); }
This should just be "getValue()".
+++ lib/Target/CBackend/CBackend.cpp	(working copy)
@@ -288,10 +288,12 @@
     void visitInvokeInst(InvokeInst &I) {
       llvm_unreachable("Lowerinvoke pass didn't work!");
     }
-
     void visitUnwindInst(UnwindInst &I) {
       llvm_unreachable("Lowerinvoke pass didn't work!");
     }
+    void visitResumeInst(ResumeInst &I) {
+      llvm_unreachable("Lowerinvoke pass didn't work!");
+    }
This doesn't seem sufficient: LowerInvoke isn't handling resume in your patch.  I'll assume that is coming later.
+++ lib/VMCore/Instructions.cpp	(working copy)
+ResumeInst::ResumeInst(const ResumeInst &RI)
+  : TerminatorInst(Type::getVoidTy(RI.getContext()), Instruction::Resume,
+                   OperandTraits<ResumeInst>::op_begin(this), 1) {
+  Op<0>() = RI.Op<0>();
+  SubclassOptionalData = RI.SubclassOptionalData;
+}
Resumes have no SubclassOptionalData to copy.  Please remove that line.
+++ lib/VMCore/AsmWriter.cpp	(working copy)
@@ -1731,6 +1731,9 @@
       writeOperand(I.getOperand(i), true);
     }
     Out << ']';
+  } else if (isa<ResumeInst>(I)) {
+    Out << ' ';
+    writeOperand(Operand, true);
   } else if (const PHINode *PN = dyn_cast<PHINode>(&I)) {
     Out << ' ';
     TypePrinter.print(I.getType(), Out);
This patch doesn't look needed.
Otherwise, this looks good.  Please feel free to commit this (with the Context argument's removed) after we settle on the LangRef patch.
-Chris
    
    
More information about the llvm-commits
mailing list