+void CWriter::visitInvokeInst(InvokeInst &II) {
+ Out << " {\n"
+ << " struct __llvm_jmpbuf_list_t Entry;\n"
+ << " Entry.next = __llvm_jmpbuf_list;\n"
+ << " if (setjmp(Entry.buf)) {\n"
+ << " __llvm_jmpbuf_list = Entry.next;\n";
+ printBranchToBlock(II.getParent(), II.getExceptionalDest(), 4);
+ Out << " }\n"
+ << " __llvm_jmpbuf_list = &Entry;\n"
+ << " ";
+ visitCallSite(&II);
+ Out << ";\n"
+ << " __llvm_jmpbuf_list = Entry.next;\n"
+ << " }\n";
+ printBranchToBlock(II.getParent(), II.getNormalDest(), 0);
+ emittedInvoke = true;
+}
+