PR46908: Emit undef destroying_delete_t as an aggregate RValue.
authorRichard Smith <richard@metafoo.co.uk>
Thu, 30 Jul 2020 21:17:26 +0000 (14:17 -0700)
committerRichard Smith <richard@metafoo.co.uk>
Thu, 30 Jul 2020 21:50:01 +0000 (14:50 -0700)
commit1e7f026c3b59bea22491819f86d8388d0c3e0c07
tree84677870edb319483af4db4769c4d8d2e7e7f111
parentc89e46e767e25c426628f6365c577a3248634f1f
PR46908: Emit undef destroying_delete_t as an aggregate RValue.

We previously used a non-aggregate RValue to represent the passed value,
which violated the assumptions of call arg lowering in some cases, in
particular on 32-bit Windows, where we'd end up producing an FCA store
with TBAA metadata, that the IR verifier would reject.
clang/lib/CodeGen/CGExprCXX.cpp
clang/test/CodeGenCXX/cxx2a-destroying-delete.cpp