[PATCH] D66094: [CodeGen] Emit destructor calls for non-trivial C structs returned by function calls and loaded from volatile objects

Akira Hatanaka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 4 17:59:14 PST 2020


ahatanak updated this revision to Diff 248363.
ahatanak marked 2 inline comments as done.
ahatanak removed a project: LLVM.
ahatanak removed a subscriber: llvm-commits.
ahatanak added a comment.
Herald added a subscriber: ributzka.

Address review comments.

- Declare the flags in `ReturnValueSlot` as bitfields.
- Replace flag `RequiresDestruction` with flag `IsExternallyDestructed` and move the `pushDestroy` call to `EmitCall`. I audited all the places where `ReturnValueSlot` is constructed and there were only a few places where `IsExternallyDestructed` had to be set to true.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66094/new/

https://reviews.llvm.org/D66094

Files:
  clang/include/clang/Sema/Sema.h
  clang/lib/CodeGen/CGCall.cpp
  clang/lib/CodeGen/CGCall.h
  clang/lib/CodeGen/CGClass.cpp
  clang/lib/CodeGen/CGExprAgg.cpp
  clang/lib/CodeGen/CGVTables.cpp
  clang/lib/Parse/ParseObjc.cpp
  clang/lib/Sema/SemaExpr.cpp
  clang/lib/Sema/SemaExprObjC.cpp
  clang/test/CodeGenObjC/arc.m
  clang/test/CodeGenObjC/strong-in-c-struct.m

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66094.248363.patch
Type: text/x-patch
Size: 14328 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200305/0363a730/attachment.bin>


More information about the llvm-commits mailing list