diff options
author | Eric Fiselier <eric@efcs.ca> | 2017-01-02 20:15:33 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2017-01-02 20:15:33 +0000 |
commit | e9735f17e04bd5cd4cf232a733edc1d0652b9753 (patch) | |
tree | e1925d9eae48f5be6c6e0555958520fcab6b10a3 /llvm/lib/Transforms/Utils/FunctionImportUtils.cpp | |
parent | aa0ec1e99207305f02f5a323221856422e81ca4c (diff) | |
download | bcm5719-llvm-e9735f17e04bd5cd4cf232a733edc1d0652b9753.tar.gz bcm5719-llvm-e9735f17e04bd5cd4cf232a733edc1d0652b9753.zip |
Rework fix for PR19460 - Use explicit bool as an extension instead.
In the previous fix I used a PMF type as a semi-safe bool type in C++03.
However immediately after committing I realized clang offered explicit
conversion operators as an extension. This patch removes the old fix and
enables _LIBCPP_EXPLICIT using __has_extension instead.
This change also affects the following other classes, which have
'_LIBCPP_EXPLICIT operator bool()'.
* shared_ptr
* unique_ptr
* error_condition
* basic_ios
* function (already C++11 only)
* istream::sentry
* experimental::string_view.
In all of the above cases I believe it is safe to enable the extension, except
in the experimental::string_view case. There seem to be some Clang bugs
affecting the experimental::string_view conversion to std::basic_string. To
work around that I manually disabled _LIBCPP_EXPLICIT in that case.
llvm-svn: 290831
Diffstat (limited to 'llvm/lib/Transforms/Utils/FunctionImportUtils.cpp')
0 files changed, 0 insertions, 0 deletions