[PATCH] D31460: [coroutines] Add cleanup for compiler injected objects/allocations in coroutine body

Reid Kleckner via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 29 13:41:40 PDT 2017


rnk accepted this revision.
rnk added a comment.
This revision is now accepted and ready to land.

lgtm



================
Comment at: lib/CodeGen/CGCoroutine.cpp:225
+  void Emit(CodeGenFunction &CGF, Flags) override {
+    CGF.EmitStmt(Deallocate);
+  }
----------------
This will be called twice: once for a normal exit and once for exceptional exit. In general, double emitting a `Stmt*` is not safe, since it might contain a VarDecl or a LabelDecl, but this usage is safe because `SubStmtBuilder::makeNewAndDeleteExpr()` builds two calls that can't declare anything. That is *definitely* worth a comment. :)


https://reviews.llvm.org/D31460





More information about the cfe-commits mailing list