summaryrefslogtreecommitdiffstats
path: root/libcxx/include/functional
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2019-06-12 02:03:31 +0000
committerEric Fiselier <eric@efcs.ca>2019-06-12 02:03:31 +0000
commit14d4869209cc8ff9a53aaa5a59d6409fbc1c5f5d (patch)
tree74a756f118387cf47600a6de1fe3fa6fd615d353 /libcxx/include/functional
parentfbfee60c32636a5dec6acceca401a78a1b024025 (diff)
downloadbcm5719-llvm-14d4869209cc8ff9a53aaa5a59d6409fbc1c5f5d.tar.gz
bcm5719-llvm-14d4869209cc8ff9a53aaa5a59d6409fbc1c5f5d.zip
Apply [[nodebug]] to typedefs throughout the STL.
When applied to a typedef or alias template, the [[nodebug]] attribute makes the typedef transparent to the debugger, so instead of seeing `std::__function::__alloc_func<remove_reference<void(&)()>::type, allocator<remove_reference<void(&)()>, void()>::_Target` you see `void(&)()` as the type of the variable in your debugger. Removing all this SFINAE noise from debug info has huge binary size wins, in addition to improving the readability. For now this change is on by default. Users can override it by specifying -D_LIBCPP_NODEBUG_TYPE= llvm-svn: 363117
Diffstat (limited to 'libcxx/include/functional')
-rw-r--r--libcxx/include/functional6
1 files changed, 3 insertions, 3 deletions
diff --git a/libcxx/include/functional b/libcxx/include/functional
index e2eac0e7648..c0a89f7b0b9 100644
--- a/libcxx/include/functional
+++ b/libcxx/include/functional
@@ -1488,8 +1488,8 @@ class __alloc_func<_Fp, _Ap, _Rp(_ArgTypes...)>
__compressed_pair<_Fp, _Ap> __f_;
public:
- typedef _Fp _Target;
- typedef _Ap _Alloc;
+ typedef _LIBCPP_NODEBUG_TYPE _Fp _Target;
+ typedef _LIBCPP_NODEBUG_TYPE _Ap _Alloc;
_LIBCPP_INLINE_VISIBILITY
const _Target& __target() const { return __f_.first(); }
@@ -1566,7 +1566,7 @@ class __default_alloc_func<_Fp, _Rp(_ArgTypes...)> {
_Fp __f_;
public:
- typedef _Fp _Target;
+ typedef _LIBCPP_NODEBUG_TYPE _Fp _Target;
_LIBCPP_INLINE_VISIBILITY
const _Target& __target() const { return __f_; }
OpenPOWER on IntegriCloud