Skip to content

Commit 3a9e996

Browse files
committed
[libc++] Introduce the notion of a minimum header version
1 parent 138e0ff commit 3a9e996

19 files changed

+72
-97
lines changed

libcxx/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ set(LIBCXX_ABI_NAMESPACE "__${LIBCXX_ABI_VERSION}" CACHE STRING "The inline ABI
205205
if (NOT LIBCXX_ABI_NAMESPACE MATCHES "__.*")
206206
message(FATAL_ERROR "LIBCXX_ABI_NAMESPACE must be a reserved identifier, got '${LIBCXX_ABI_NAMESPACE}'.")
207207
endif()
208+
set(LIBCXX_AVAILABILITY_MINIMUM_HEADER_VERSION "1" CACHE STRING "Minimum version of the libc++ headers that are used by binaries linked against the libc++ library")
208209
option(LIBCXX_ABI_FORCE_ITANIUM "Ignore auto-detection and force use of the Itanium ABI.")
209210
option(LIBCXX_ABI_FORCE_MICROSOFT "Ignore auto-detection and force use of the Microsoft ABI.")
210211

@@ -729,6 +730,7 @@ endfunction()
729730
# Configuration file flags =====================================================
730731
config_define(${LIBCXX_ABI_VERSION} _LIBCPP_ABI_VERSION)
731732
config_define(${LIBCXX_ABI_NAMESPACE} _LIBCPP_ABI_NAMESPACE)
733+
config_define(${LIBCXX_AVAILABILITY_MINIMUM_HEADER_VERSION} _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION)
732734
config_define(${LIBCXX_ABI_FORCE_ITANIUM} _LIBCPP_ABI_FORCE_ITANIUM)
733735
config_define(${LIBCXX_ABI_FORCE_MICROSOFT} _LIBCPP_ABI_FORCE_MICROSOFT)
734736
config_define(${LIBCXX_ENABLE_THREADS} _LIBCPP_HAS_THREADS)

libcxx/docs/ABIGuarantees.rst

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -114,23 +114,6 @@ hand, backwards compatibility is generally guaranteed.
114114

115115
There are multiple ABI flags that change the symbols exported from the built library:
116116

117-
``_LIBCPP_ABI_DO_NOT_EXPORT_BASIC_STRING_COMMON``
118-
-------------------------------------------------
119-
This removes ``__basic_string_common<true>::__throw_length_error()`` and
120-
``__basic_string_common<true>::__throw_out_of_range()``. These symbols have been used by ``basic_string`` in the past,
121-
but are not referenced from the headers anymore.
122-
123-
``_LIBCPP_ABI_DO_NOT_EXPORT_VECTOR_BASE_COMMON``
124-
------------------------------------------------
125-
This removes ``__vector_base_common<true>::__throw_length_error()`` and
126-
``__vector_base_common<true>::__throw_out_of_range()``. These symbols have been used by ``vector`` in the past, but are
127-
not referenced from the headers anymore.
128-
129-
``_LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10``
130-
----------------------------------------------
131-
This removes ``__itoa::__u32toa()`` and ``__iota::__u64toa``. These symbols have been used by ``to_chars`` in the past,
132-
but are not referenced from the headers anymore.
133-
134117
``_LIBCPP_ABI_STRING_OPTIMIZED_EXTERNAL_INSTANTIATION``
135118
-------------------------------------------------------
136119
This replaces the symbols that are exported for ``basic_string`` to avoid exporting functions which are likely to be

libcxx/include/__config

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -547,14 +547,10 @@ typedef __char32_t char32_t;
547547
# endif
548548
# define _LIBCPP_HIDE_FROM_ABI_VIRTUAL _LIBCPP_HIDDEN _LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION
549549

550-
# ifdef _LIBCPP_BUILDING_LIBRARY
551-
# if _LIBCPP_ABI_VERSION > 1
552-
# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
553-
# else
554-
# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1
555-
# endif
550+
# if defined(_LIBCPP_BUILDING_LIBRARY) && _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 8
551+
# define _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8
556552
# else
557-
# define _LIBCPP_HIDE_FROM_ABI_AFTER_V1 _LIBCPP_HIDE_FROM_ABI
553+
# define _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 _LIBCPP_HIDE_FROM_ABI
558554
# endif
559555

560556
// Clang modules take a significant compile time hit when pushing and popping diagnostics.

libcxx/include/__config_site.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#cmakedefine _LIBCPP_ABI_VERSION @_LIBCPP_ABI_VERSION@
1313
#cmakedefine _LIBCPP_ABI_NAMESPACE @_LIBCPP_ABI_NAMESPACE@
14+
#cmakedefine _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION @_LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION@
1415
#cmakedefine01 _LIBCPP_ABI_FORCE_ITANIUM
1516
#cmakedefine01 _LIBCPP_ABI_FORCE_MICROSOFT
1617
#cmakedefine01 _LIBCPP_HAS_THREADS

libcxx/include/__configuration/abi.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,6 @@
6363

6464
// These flags are documented in ABIGuarantees.rst
6565
# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
66-
# define _LIBCPP_ABI_DO_NOT_EXPORT_BASIC_STRING_COMMON
67-
# define _LIBCPP_ABI_DO_NOT_EXPORT_VECTOR_BASE_COMMON
68-
# define _LIBCPP_ABI_DO_NOT_EXPORT_TO_CHARS_BASE_10
6966
# define _LIBCPP_ABI_ENABLE_SHARED_PTR_TRIVIAL_ABI
7067
# define _LIBCPP_ABI_ENABLE_UNIQUE_PTR_TRIVIAL_ABI
7168
# define _LIBCPP_ABI_FIX_CITYHASH_IMPLEMENTATION
@@ -85,17 +82,6 @@
8582
# define _LIBCPP_ABI_VARIANT_INDEX_TYPE_OPTIMIZATION
8683

8784
#elif _LIBCPP_ABI_VERSION == 1
88-
# if !(defined(_LIBCPP_OBJECT_FORMAT_COFF) || defined(_LIBCPP_OBJECT_FORMAT_XCOFF))
89-
// Enable compiling copies of now inline methods into the dylib to support
90-
// applications compiled against older libraries. This is unnecessary with
91-
// COFF dllexport semantics, since dllexport forces a non-inline definition
92-
// of inline functions to be emitted anyway. Our own non-inline copy would
93-
// conflict with the dllexport-emitted copy, so we disable it. For XCOFF,
94-
// the linker will take issue with the symbols in the shared object if the
95-
// weak inline methods get visibility (such as from -fvisibility-inlines-hidden),
96-
// so disable it.
97-
# define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS
98-
# endif
9985
// Feature macros for disabling pre ABI v1 features. All of these options
10086
// are deprecated.
10187
# if defined(__FreeBSD__)

libcxx/include/__ostream/basic_ostream.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class basic_ostream : virtual public basic_ios<_CharT, _Traits> {
5353
typedef typename traits_type::off_type off_type;
5454

5555
// 27.7.2.2 Constructor/destructor:
56-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb) {
56+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb) {
5757
this->init(__sb);
5858
}
5959
~basic_ostream() override;
@@ -67,7 +67,7 @@ class basic_ostream : virtual public basic_ios<_CharT, _Traits> {
6767
// 27.7.2.3 Assign/swap
6868
inline _LIBCPP_HIDE_FROM_ABI basic_ostream& operator=(basic_ostream&& __rhs);
6969

70-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_ostream& __rhs) {
70+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void swap(basic_ostream& __rhs) {
7171
basic_ios<char_type, traits_type>::swap(__rhs);
7272
}
7373

@@ -76,17 +76,17 @@ class basic_ostream : virtual public basic_ios<_CharT, _Traits> {
7676
class sentry;
7777

7878
// 27.7.2.6 Formatted output:
79-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&)) {
79+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&)) {
8080
return __pf(*this);
8181
}
8282

83-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream&
83+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_ostream&
8484
operator<<(basic_ios<char_type, traits_type>& (*__pf)(basic_ios<char_type, traits_type>&)) {
8585
__pf(*this);
8686
return *this;
8787
}
8888

89-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream& operator<<(ios_base& (*__pf)(ios_base&)) {
89+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_ostream& operator<<(ios_base& (*__pf)(ios_base&)) {
9090
__pf(*this);
9191
return *this;
9292
}
@@ -174,9 +174,9 @@ class basic_ostream : virtual public basic_ios<_CharT, _Traits> {
174174
basic_ostream& flush();
175175

176176
// 27.7.2.5 seeks:
177-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 pos_type tellp();
178-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream& seekp(pos_type __pos);
179-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);
177+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 pos_type tellp();
178+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_ostream& seekp(pos_type __pos);
179+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_ostream& seekp(off_type __off, ios_base::seekdir __dir);
180180

181181
protected:
182182
_LIBCPP_HIDE_FROM_ABI basic_ostream() {} // extension, intentially does not initialize

libcxx/include/istream

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public:
209209
typedef typename traits_type::off_type off_type;
210210

211211
// 27.7.1.1.1 Constructor/destructor:
212-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 explicit basic_istream(basic_streambuf<char_type, traits_type>* __sb)
212+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 explicit basic_istream(basic_streambuf<char_type, traits_type>* __sb)
213213
: __gc_(0) {
214214
this->init(__sb);
215215
}
@@ -221,7 +221,7 @@ protected:
221221
// 27.7.1.1.2 Assign/swap:
222222
inline _LIBCPP_HIDE_FROM_ABI basic_istream& operator=(basic_istream&& __rhs);
223223

224-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_istream& __rhs) {
224+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void swap(basic_istream& __rhs) {
225225
std::swap(__gc_, __rhs.__gc_);
226226
basic_ios<char_type, traits_type>::swap(__rhs);
227227
}
@@ -234,17 +234,17 @@ public:
234234
class sentry;
235235

236236
// 27.7.1.2 Formatted input:
237-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&)) {
237+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&)) {
238238
return __pf(*this);
239239
}
240240

241-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream&
241+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream&
242242
operator>>(basic_ios<char_type, traits_type>& (*__pf)(basic_ios<char_type, traits_type>&)) {
243243
__pf(*this);
244244
return *this;
245245
}
246246

247-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& operator>>(ios_base& (*__pf)(ios_base&)) {
247+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& operator>>(ios_base& (*__pf)(ios_base&)) {
248248
__pf(*this);
249249
return *this;
250250
}
@@ -268,26 +268,26 @@ public:
268268
_LIBCPP_HIDE_FROM_ABI streamsize gcount() const { return __gc_; }
269269
int_type get();
270270

271-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& get(char_type& __c) {
271+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& get(char_type& __c) {
272272
int_type __ch = get();
273273
if (__ch != traits_type::eof())
274274
__c = traits_type::to_char_type(__ch);
275275
return *this;
276276
}
277277

278-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& get(char_type* __s, streamsize __n) {
278+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& get(char_type* __s, streamsize __n) {
279279
return get(__s, __n, this->widen('\n'));
280280
}
281281

282282
basic_istream& get(char_type* __s, streamsize __n, char_type __dlm);
283283

284-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& get(basic_streambuf<char_type, traits_type>& __sb) {
284+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& get(basic_streambuf<char_type, traits_type>& __sb) {
285285
return get(__sb, this->widen('\n'));
286286
}
287287

288288
basic_istream& get(basic_streambuf<char_type, traits_type>& __sb, char_type __dlm);
289289

290-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_istream& getline(char_type* __s, streamsize __n) {
290+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_istream& getline(char_type* __s, streamsize __n) {
291291
return getline(__s, __n, this->widen('\n'));
292292
}
293293

@@ -1184,7 +1184,7 @@ public:
11841184
typedef typename traits_type::off_type off_type;
11851185

11861186
// constructor/destructor
1187-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 explicit basic_iostream(basic_streambuf<char_type, traits_type>* __sb)
1187+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 explicit basic_iostream(basic_streambuf<char_type, traits_type>* __sb)
11881188
: basic_istream<_CharT, _Traits>(__sb) {}
11891189

11901190
~basic_iostream() override;
@@ -1195,7 +1195,7 @@ protected:
11951195
// assign/swap
11961196
inline _LIBCPP_HIDE_FROM_ABI basic_iostream& operator=(basic_iostream&& __rhs);
11971197

1198-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void swap(basic_iostream& __rhs) {
1198+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void swap(basic_iostream& __rhs) {
11991199
basic_istream<char_type, traits_type>::swap(__rhs);
12001200
}
12011201
};

libcxx/include/streambuf

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -150,35 +150,35 @@ public:
150150
virtual ~basic_streambuf() {}
151151

152152
// 27.6.2.2.1 locales:
153-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 locale pubimbue(const locale& __loc) {
153+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 locale pubimbue(const locale& __loc) {
154154
imbue(__loc);
155155
locale __r = __loc_;
156156
__loc_ = __loc;
157157
return __r;
158158
}
159159

160-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 locale getloc() const { return __loc_; }
160+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 locale getloc() const { return __loc_; }
161161

162162
// 27.6.2.2.2 buffer and positioning:
163-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 basic_streambuf* pubsetbuf(char_type* __s, streamsize __n) {
163+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 basic_streambuf* pubsetbuf(char_type* __s, streamsize __n) {
164164
return setbuf(__s, __n);
165165
}
166166

167-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 pos_type
167+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 pos_type
168168
pubseekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode __which = ios_base::in | ios_base::out) {
169169
return seekoff(__off, __way, __which);
170170
}
171171

172-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 pos_type
172+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 pos_type
173173
pubseekpos(pos_type __sp, ios_base::openmode __which = ios_base::in | ios_base::out) {
174174
return seekpos(__sp, __which);
175175
}
176176

177-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int pubsync() { return sync(); }
177+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int pubsync() { return sync(); }
178178

179179
// Get and put areas:
180180
// 27.6.2.2.3 Get area:
181-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 streamsize in_avail() {
181+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 streamsize in_avail() {
182182
__check_invariants();
183183
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
184184

@@ -187,7 +187,7 @@ public:
187187
return showmanyc();
188188
}
189189

190-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type snextc() {
190+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type snextc() {
191191
__check_invariants();
192192
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
193193

@@ -196,7 +196,7 @@ public:
196196
return sgetc();
197197
}
198198

199-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type sbumpc() {
199+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type sbumpc() {
200200
__check_invariants();
201201
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
202202

@@ -207,7 +207,7 @@ public:
207207
return __c;
208208
}
209209

210-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type sgetc() {
210+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type sgetc() {
211211
__check_invariants();
212212
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
213213

@@ -216,10 +216,10 @@ public:
216216
return traits_type::to_int_type(*gptr());
217217
}
218218

219-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 streamsize sgetn(char_type* __s, streamsize __n) { return xsgetn(__s, __n); }
219+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 streamsize sgetn(char_type* __s, streamsize __n) { return xsgetn(__s, __n); }
220220

221221
// 27.6.2.2.4 Putback:
222-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type sputbackc(char_type __c) {
222+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type sputbackc(char_type __c) {
223223
__check_invariants();
224224
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
225225

@@ -229,7 +229,7 @@ public:
229229
return traits_type::to_int_type(*gptr());
230230
}
231231

232-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type sungetc() {
232+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type sungetc() {
233233
__check_invariants();
234234
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
235235

@@ -240,7 +240,7 @@ public:
240240
}
241241

242242
// 27.6.2.2.5 Put area:
243-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 int_type sputc(char_type __c) {
243+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 int_type sputc(char_type __c) {
244244
__check_invariants();
245245
auto __guard = std::__make_scope_guard([this] { this->__check_invariants(); });
246246

@@ -251,7 +251,7 @@ public:
251251
return traits_type::to_int_type(__c);
252252
}
253253

254-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 streamsize sputn(const char_type* __s, streamsize __n) {
254+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 streamsize sputn(const char_type* __s, streamsize __n) {
255255
return xsputn(__s, __n);
256256
}
257257

@@ -292,12 +292,12 @@ protected:
292292
_LIBCPP_HIDE_FROM_ABI char_type* gptr() const { return __ninp_; }
293293
_LIBCPP_HIDE_FROM_ABI char_type* egptr() const { return __einp_; }
294294

295-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void gbump(int __n) { __ninp_ += __n; }
295+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void gbump(int __n) { __ninp_ += __n; }
296296

297297
// gbump takes an int, so it might not be able to represent the offset we want to add.
298298
_LIBCPP_HIDE_FROM_ABI void __gbump_ptrdiff(ptrdiff_t __n) { __ninp_ += __n; }
299299

300-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) {
300+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void setg(char_type* __gbeg, char_type* __gnext, char_type* __gend) {
301301
_LIBCPP_ASSERT_VALID_INPUT_RANGE(std::__is_valid_range(__gbeg, __gnext), "[gbeg, gnext) must be a valid range");
302302
_LIBCPP_ASSERT_VALID_INPUT_RANGE(std::__is_valid_range(__gbeg, __gend), "[gbeg, gend) must be a valid range");
303303
_LIBCPP_ASSERT_VALID_INPUT_RANGE(std::__is_valid_range(__gnext, __gend), "[gnext, gend) must be a valid range");
@@ -311,11 +311,11 @@ protected:
311311
_LIBCPP_HIDE_FROM_ABI char_type* pptr() const { return __nout_; }
312312
_LIBCPP_HIDE_FROM_ABI char_type* epptr() const { return __eout_; }
313313

314-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void pbump(int __n) { __nout_ += __n; }
314+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void pbump(int __n) { __nout_ += __n; }
315315

316316
_LIBCPP_HIDE_FROM_ABI void __pbump(streamsize __n) { __nout_ += __n; }
317317

318-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 void setp(char_type* __pbeg, char_type* __pend) {
318+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 void setp(char_type* __pbeg, char_type* __pend) {
319319
_LIBCPP_ASSERT_VALID_INPUT_RANGE(std::__is_valid_range(__pbeg, __pend), "[pbeg, pend) must be a valid range");
320320
__bout_ = __nout_ = __pbeg;
321321
__eout_ = __pend;

libcxx/include/valarray

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -793,7 +793,7 @@ private:
793793
public:
794794
// construct/destroy:
795795
_LIBCPP_HIDE_FROM_ABI valarray() : __begin_(nullptr), __end_(nullptr) {}
796-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 explicit valarray(size_t __n);
796+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 explicit valarray(size_t __n);
797797
_LIBCPP_HIDE_FROM_ABI valarray(const value_type& __x, size_t __n);
798798
valarray(const value_type* __p, size_t __n);
799799
valarray(const valarray& __v);
@@ -805,7 +805,7 @@ public:
805805
valarray(const gslice_array<value_type>& __ga);
806806
valarray(const mask_array<value_type>& __ma);
807807
valarray(const indirect_array<value_type>& __ia);
808-
inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 ~valarray();
808+
inline _LIBCPP_HIDE_FROM_ABI_SINCE_LLVM8 ~valarray();
809809

810810
// assignment:
811811
valarray& operator=(const valarray& __v);

0 commit comments

Comments
 (0)