libcxx: Mark __temp_value::__temp_value as _LIBCPP_NO_CFI.
authorPeter Collingbourne <peter@pcc.me.uk>
Wed, 15 Aug 2018 17:49:30 +0000 (17:49 +0000)
committerPeter Collingbourne <peter@pcc.me.uk>
Wed, 15 Aug 2018 17:49:30 +0000 (17:49 +0000)
commitf11c00d782f1f4a60593d0b4c5a428c2e581c24b
treea14b96560fd85fb3e2e52302aee0ade4fbfed672
parent070ac768ff4ddeb372ec5d91d570ddc545fceede
libcxx: Mark __temp_value::__temp_value as _LIBCPP_NO_CFI.

This constructor needs to cast a pointer to uninitialized
memory to a pointer to object type in order to call
allocator_traits::construct(). This cast is not allowed when CFI cast
checks are enabled.

I did this instead of marking __addr() as _LIBCPP_NO_CFI so that we
don't lose CFI checks on get() or the dtor.

Differential Revision: https://reviews.llvm.org/D50743

llvm-svn: 339797
libcxx/include/memory