[PATCH] D50152: [CodeGen] Merge equivalent block copy/helper functions
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 6 14:31:17 PDT 2018
rjmccall added inline comments.
================
Comment at: lib/CodeGen/CGBlocks.cpp:1643
+ if (Ctx.getBlockVarCopyInits(VD))
+ return true;
+ return false;
----------------
ahatanak wrote:
> ahatanak wrote:
> > rjmccall wrote:
> > > Can you just ask Sema to check `canThrow` for the expression and pass it down?
> > Since this changes the existing behavior, I made changes to test/CodeGenCXX/block-byref-cxx-objc.cpp to test it. Previously, IRGen would emit an invoke to call `_Block_object_assign` when the constructor was marked as noexcept.
> Perhaps I misunderstood your comment, should I have Sema set a flag or something in Expr when it calls a function that can throw?
Sema has a `canThrow` predicate that it uses when checking things like the `noexcept` expression. I was thinking that you could pass that down with the copy expression in the AST for the block capture.
Constructors can have default-argument expressions that can throw even if the constructor itself can't, so it's important to do it that way.
Repository:
rC Clang
https://reviews.llvm.org/D50152
More information about the cfe-commits
mailing list