From ed3c0e6b3f3b61180710214e79a80a5342fb467d Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Sat, 1 Apr 2017 03:20:48 +0000 Subject: [PATCH] string: Remove always_inline from basic_string::__init This is effectively a partial revert of r278356, which started inlining basic_string::__init. Even if we want to help the compiler along with an inlinehint, we shouldn't hamstring it by forcing it to inline all the time. Libc++ uses always_inline widely as a limit-the-ABI-hack, but since __init is already on the dylib boundary, it makes no sense here and just harms the debugging experience at -O0. rdar://problem/31013102 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@299290 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/string | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/string b/include/string index 714ff84dc..574311c94 100644 --- a/include/string +++ b/include/string @@ -1338,15 +1338,15 @@ private: __align_it (__s+1)) - 1;} - inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY + inline void __init(const value_type* __s, size_type __sz, size_type __reserve); - inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY + inline void __init(const value_type* __s, size_type __sz); - inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY + inline void __init(size_type __n, value_type __c); template - inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY + inline typename enable_if < __is_exactly_input_iterator<_InputIterator>::value, @@ -1355,7 +1355,7 @@ private: __init(_InputIterator __first, _InputIterator __last); template - inline _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY + inline typename enable_if < __is_forward_iterator<_ForwardIterator>::value,