jfb marked an inline comment as done.
jfb added inline comments.
================
Comment at: lib/CodeGen/CGDecl.cpp:1640
// Only initialize a __block's storage: we always initialize the header.
- if (emission.IsEscapingByRef)
+ if (emission.IsEscapingByRef && isa<llvm::AllocaInst>(Loc.getPointer()))
Loc = emitBlockByrefAddress(Loc, &D, /*follow=*/false);
----------------
rjmccall wrote:
> This seems like something we're likely regret eventually. If we've already
> drilled down to the storage, we should propagate that information into this
> rather than trying to detect it retroactively here.
You mean that I should check `!capturedByInit` instead? I initially did that,
but I was worried about someone adding other drill-downs and then going out of
sync. My rationale was: you always start with `alloca`, so anything else means
a drill-down occurred.
That being said, this isn't a strongly held belief. Happy to go your way if you
think it's better, you know this code more than I do :)
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58218/new/
https://reviews.llvm.org/D58218
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits