]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/gcc/gcc-fix-inlining-issues.patch
dhcpcd: fix delay after dhcp down.
[ipfire-2.x.git] / src / patches / gcc / gcc-fix-inlining-issues.patch
CommitLineData
8675b78a
MT
1From: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164
2
3--- trunk/libitm/local_atomic 2015/08/20 17:43:55 227039
4+++ trunk/libitm/local_atomic 2015/08/20 17:55:24 227040
5@@ -41,8 +41,7 @@
6 #ifndef _GLIBCXX_ATOMIC
7 #define _GLIBCXX_ATOMIC 1
8
9-#undef __always_inline
10-#define __always_inline __attribute__((always_inline))
11+#define __libitm_always_inline __attribute__((always_inline))
12
13 // #pragma GCC system_header
14
15@@ -74,7 +73,7 @@
16 memory_order_seq_cst
17 } memory_order;
18
19- inline __always_inline memory_order
20+ inline __libitm_always_inline memory_order
21 __calculate_memory_order(memory_order __m) noexcept
22 {
23 const bool __cond1 = __m == memory_order_release;
24@@ -84,13 +83,13 @@
25 return __mo2;
26 }
27
28- inline __always_inline void
29+ inline __libitm_always_inline void
30 atomic_thread_fence(memory_order __m) noexcept
31 {
32 __atomic_thread_fence (__m);
33 }
34
35- inline __always_inline void
36+ inline __libitm_always_inline void
37 atomic_signal_fence(memory_order __m) noexcept
38 {
39 __atomic_thread_fence (__m);
40@@ -280,19 +279,19 @@
41 // Conversion to ATOMIC_FLAG_INIT.
42 atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { }
43
44- __always_inline bool
45+ __libitm_always_inline bool
46 test_and_set(memory_order __m = memory_order_seq_cst) noexcept
47 {
48 return __atomic_test_and_set (&_M_i, __m);
49 }
50
51- __always_inline bool
52+ __libitm_always_inline bool
53 test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
54 {
55 return __atomic_test_and_set (&_M_i, __m);
56 }
57
58- __always_inline void
59+ __libitm_always_inline void
60 clear(memory_order __m = memory_order_seq_cst) noexcept
61 {
62 // __glibcxx_assert(__m != memory_order_consume);
63@@ -302,7 +301,7 @@
64 __atomic_clear (&_M_i, __m);
65 }
66
67- __always_inline void
68+ __libitm_always_inline void
69 clear(memory_order __m = memory_order_seq_cst) volatile noexcept
70 {
71 // __glibcxx_assert(__m != memory_order_consume);
72@@ -455,7 +454,7 @@
73 is_lock_free() const volatile noexcept
74 { return __atomic_is_lock_free (sizeof (_M_i), &_M_i); }
75
76- __always_inline void
77+ __libitm_always_inline void
78 store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
79 {
80 // __glibcxx_assert(__m != memory_order_acquire);
81@@ -465,7 +464,7 @@
82 __atomic_store_n(&_M_i, __i, __m);
83 }
84
85- __always_inline void
86+ __libitm_always_inline void
87 store(__int_type __i,
88 memory_order __m = memory_order_seq_cst) volatile noexcept
89 {
90@@ -476,7 +475,7 @@
91 __atomic_store_n(&_M_i, __i, __m);
92 }
93
94- __always_inline __int_type
95+ __libitm_always_inline __int_type
96 load(memory_order __m = memory_order_seq_cst) const noexcept
97 {
98 // __glibcxx_assert(__m != memory_order_release);
99@@ -485,7 +484,7 @@
100 return __atomic_load_n(&_M_i, __m);
101 }
102
103- __always_inline __int_type
104+ __libitm_always_inline __int_type
105 load(memory_order __m = memory_order_seq_cst) const volatile noexcept
106 {
107 // __glibcxx_assert(__m != memory_order_release);
108@@ -494,21 +493,21 @@
109 return __atomic_load_n(&_M_i, __m);
110 }
111
112- __always_inline __int_type
113+ __libitm_always_inline __int_type
114 exchange(__int_type __i,
115 memory_order __m = memory_order_seq_cst) noexcept
116 {
117 return __atomic_exchange_n(&_M_i, __i, __m);
118 }
119
120- __always_inline __int_type
121+ __libitm_always_inline __int_type
122 exchange(__int_type __i,
123 memory_order __m = memory_order_seq_cst) volatile noexcept
124 {
125 return __atomic_exchange_n(&_M_i, __i, __m);
126 }
127
128- __always_inline bool
129+ __libitm_always_inline bool
130 compare_exchange_weak(__int_type& __i1, __int_type __i2,
131 memory_order __m1, memory_order __m2) noexcept
132 {
133@@ -519,7 +518,7 @@
134 return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
135 }
136
137- __always_inline bool
138+ __libitm_always_inline bool
139 compare_exchange_weak(__int_type& __i1, __int_type __i2,
140 memory_order __m1,
141 memory_order __m2) volatile noexcept
142@@ -531,7 +530,7 @@
143 return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 1, __m1, __m2);
144 }
145
146- __always_inline bool
147+ __libitm_always_inline bool
148 compare_exchange_weak(__int_type& __i1, __int_type __i2,
149 memory_order __m = memory_order_seq_cst) noexcept
150 {
151@@ -539,7 +538,7 @@
152 __calculate_memory_order(__m));
153 }
154
155- __always_inline bool
156+ __libitm_always_inline bool
157 compare_exchange_weak(__int_type& __i1, __int_type __i2,
158 memory_order __m = memory_order_seq_cst) volatile noexcept
159 {
160@@ -547,7 +546,7 @@
161 __calculate_memory_order(__m));
162 }
163
164- __always_inline bool
165+ __libitm_always_inline bool
166 compare_exchange_strong(__int_type& __i1, __int_type __i2,
167 memory_order __m1, memory_order __m2) noexcept
168 {
169@@ -558,7 +557,7 @@
170 return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2);
171 }
172
173- __always_inline bool
174+ __libitm_always_inline bool
175 compare_exchange_strong(__int_type& __i1, __int_type __i2,
176 memory_order __m1,
177 memory_order __m2) volatile noexcept
178@@ -570,7 +569,7 @@
179 return __atomic_compare_exchange_n(&_M_i, &__i1, __i2, 0, __m1, __m2);
180 }
181
182- __always_inline bool
183+ __libitm_always_inline bool
184 compare_exchange_strong(__int_type& __i1, __int_type __i2,
185 memory_order __m = memory_order_seq_cst) noexcept
186 {
187@@ -578,7 +577,7 @@
188 __calculate_memory_order(__m));
189 }
190
191- __always_inline bool
192+ __libitm_always_inline bool
193 compare_exchange_strong(__int_type& __i1, __int_type __i2,
194 memory_order __m = memory_order_seq_cst) volatile noexcept
195 {
196@@ -586,52 +585,52 @@
197 __calculate_memory_order(__m));
198 }
199
200- __always_inline __int_type
201+ __libitm_always_inline __int_type
202 fetch_add(__int_type __i,
203 memory_order __m = memory_order_seq_cst) noexcept
204 { return __atomic_fetch_add(&_M_i, __i, __m); }
205
206- __always_inline __int_type
207+ __libitm_always_inline __int_type
208 fetch_add(__int_type __i,
209 memory_order __m = memory_order_seq_cst) volatile noexcept
210 { return __atomic_fetch_add(&_M_i, __i, __m); }
211
212- __always_inline __int_type
213+ __libitm_always_inline __int_type
214 fetch_sub(__int_type __i,
215 memory_order __m = memory_order_seq_cst) noexcept
216 { return __atomic_fetch_sub(&_M_i, __i, __m); }
217
218- __always_inline __int_type
219+ __libitm_always_inline __int_type
220 fetch_sub(__int_type __i,
221 memory_order __m = memory_order_seq_cst) volatile noexcept
222 { return __atomic_fetch_sub(&_M_i, __i, __m); }
223
224- __always_inline __int_type
225+ __libitm_always_inline __int_type
226 fetch_and(__int_type __i,
227 memory_order __m = memory_order_seq_cst) noexcept
228 { return __atomic_fetch_and(&_M_i, __i, __m); }
229
230- __always_inline __int_type
231+ __libitm_always_inline __int_type
232 fetch_and(__int_type __i,
233 memory_order __m = memory_order_seq_cst) volatile noexcept
234 { return __atomic_fetch_and(&_M_i, __i, __m); }
235
236- __always_inline __int_type
237+ __libitm_always_inline __int_type
238 fetch_or(__int_type __i,
239 memory_order __m = memory_order_seq_cst) noexcept
240 { return __atomic_fetch_or(&_M_i, __i, __m); }
241
242- __always_inline __int_type
243+ __libitm_always_inline __int_type
244 fetch_or(__int_type __i,
245 memory_order __m = memory_order_seq_cst) volatile noexcept
246 { return __atomic_fetch_or(&_M_i, __i, __m); }
247
248- __always_inline __int_type
249+ __libitm_always_inline __int_type
250 fetch_xor(__int_type __i,
251 memory_order __m = memory_order_seq_cst) noexcept
252 { return __atomic_fetch_xor(&_M_i, __i, __m); }
253
254- __always_inline __int_type
255+ __libitm_always_inline __int_type
256 fetch_xor(__int_type __i,
257 memory_order __m = memory_order_seq_cst) volatile noexcept
258 { return __atomic_fetch_xor(&_M_i, __i, __m); }
259@@ -733,7 +732,7 @@
260 is_lock_free() const volatile noexcept
261 { return __atomic_is_lock_free (sizeof (_M_p), &_M_p); }
262
263- __always_inline void
264+ __libitm_always_inline void
265 store(__pointer_type __p,
266 memory_order __m = memory_order_seq_cst) noexcept
267 {
268@@ -744,7 +743,7 @@
269 __atomic_store_n(&_M_p, __p, __m);
270 }
271
272- __always_inline void
273+ __libitm_always_inline void
274 store(__pointer_type __p,
275 memory_order __m = memory_order_seq_cst) volatile noexcept
276 {
277@@ -755,7 +754,7 @@
278 __atomic_store_n(&_M_p, __p, __m);
279 }
280
281- __always_inline __pointer_type
282+ __libitm_always_inline __pointer_type
283 load(memory_order __m = memory_order_seq_cst) const noexcept
284 {
285 // __glibcxx_assert(__m != memory_order_release);
286@@ -764,7 +763,7 @@
287 return __atomic_load_n(&_M_p, __m);
288 }
289
290- __always_inline __pointer_type
291+ __libitm_always_inline __pointer_type
292 load(memory_order __m = memory_order_seq_cst) const volatile noexcept
293 {
294 // __glibcxx_assert(__m != memory_order_release);
295@@ -773,21 +772,21 @@
296 return __atomic_load_n(&_M_p, __m);
297 }
298
299- __always_inline __pointer_type
300+ __libitm_always_inline __pointer_type
301 exchange(__pointer_type __p,
302 memory_order __m = memory_order_seq_cst) noexcept
303 {
304 return __atomic_exchange_n(&_M_p, __p, __m);
305 }
306
307- __always_inline __pointer_type
308+ __libitm_always_inline __pointer_type
309 exchange(__pointer_type __p,
310 memory_order __m = memory_order_seq_cst) volatile noexcept
311 {
312 return __atomic_exchange_n(&_M_p, __p, __m);
313 }
314
315- __always_inline bool
316+ __libitm_always_inline bool
317 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
318 memory_order __m1,
319 memory_order __m2) noexcept
320@@ -799,7 +798,7 @@
321 return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2);
322 }
323
324- __always_inline bool
325+ __libitm_always_inline bool
326 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
327 memory_order __m1,
328 memory_order __m2) volatile noexcept
329@@ -811,22 +810,22 @@
330 return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 0, __m1, __m2);
331 }
332
333- __always_inline __pointer_type
334+ __libitm_always_inline __pointer_type
335 fetch_add(ptrdiff_t __d,
336 memory_order __m = memory_order_seq_cst) noexcept
337 { return __atomic_fetch_add(&_M_p, __d, __m); }
338
339- __always_inline __pointer_type
340+ __libitm_always_inline __pointer_type
341 fetch_add(ptrdiff_t __d,
342 memory_order __m = memory_order_seq_cst) volatile noexcept
343 { return __atomic_fetch_add(&_M_p, __d, __m); }
344
345- __always_inline __pointer_type
346+ __libitm_always_inline __pointer_type
347 fetch_sub(ptrdiff_t __d,
348 memory_order __m = memory_order_seq_cst) noexcept
349 { return __atomic_fetch_sub(&_M_p, __d, __m); }
350
351- __always_inline __pointer_type
352+ __libitm_always_inline __pointer_type
353 fetch_sub(ptrdiff_t __d,
354 memory_order __m = memory_order_seq_cst) volatile noexcept
355 { return __atomic_fetch_sub(&_M_p, __d, __m); }
356@@ -870,67 +869,67 @@
357 bool
358 is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); }
359
360- __always_inline void
361+ __libitm_always_inline void
362 store(bool __i, memory_order __m = memory_order_seq_cst) noexcept
363 { _M_base.store(__i, __m); }
364
365- __always_inline void
366+ __libitm_always_inline void
367 store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept
368 { _M_base.store(__i, __m); }
369
370- __always_inline bool
371+ __libitm_always_inline bool
372 load(memory_order __m = memory_order_seq_cst) const noexcept
373 { return _M_base.load(__m); }
374
375- __always_inline bool
376+ __libitm_always_inline bool
377 load(memory_order __m = memory_order_seq_cst) const volatile noexcept
378 { return _M_base.load(__m); }
379
380- __always_inline bool
381+ __libitm_always_inline bool
382 exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept
383 { return _M_base.exchange(__i, __m); }
384
385- __always_inline bool
386+ __libitm_always_inline bool
387 exchange(bool __i,
388 memory_order __m = memory_order_seq_cst) volatile noexcept
389 { return _M_base.exchange(__i, __m); }
390
391- __always_inline bool
392+ __libitm_always_inline bool
393 compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
394 memory_order __m2) noexcept
395 { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
396
397- __always_inline bool
398+ __libitm_always_inline bool
399 compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
400 memory_order __m2) volatile noexcept
401 { return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
402
403- __always_inline bool
404+ __libitm_always_inline bool
405 compare_exchange_weak(bool& __i1, bool __i2,
406 memory_order __m = memory_order_seq_cst) noexcept
407 { return _M_base.compare_exchange_weak(__i1, __i2, __m); }
408
409- __always_inline bool
410+ __libitm_always_inline bool
411 compare_exchange_weak(bool& __i1, bool __i2,
412 memory_order __m = memory_order_seq_cst) volatile noexcept
413 { return _M_base.compare_exchange_weak(__i1, __i2, __m); }
414
415- __always_inline bool
416+ __libitm_always_inline bool
417 compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
418 memory_order __m2) noexcept
419 { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
420
421- __always_inline bool
422+ __libitm_always_inline bool
423 compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
424 memory_order __m2) volatile noexcept
425 { return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
426
427- __always_inline bool
428+ __libitm_always_inline bool
429 compare_exchange_strong(bool& __i1, bool __i2,
430 memory_order __m = memory_order_seq_cst) noexcept
431 { return _M_base.compare_exchange_strong(__i1, __i2, __m); }
432
433- __always_inline bool
434+ __libitm_always_inline bool
435 compare_exchange_strong(bool& __i1, bool __i2,
436 memory_order __m = memory_order_seq_cst) volatile noexcept
437 { return _M_base.compare_exchange_strong(__i1, __i2, __m); }
438@@ -980,11 +979,11 @@
439 store(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept
440 { __atomic_store(&_M_i, &__i, _m); }
441
442- __always_inline void
443+ __libitm_always_inline void
444 store(_Tp __i, memory_order _m = memory_order_seq_cst) volatile noexcept
445 { __atomic_store(&_M_i, &__i, _m); }
446
447- __always_inline _Tp
448+ __libitm_always_inline _Tp
449 load(memory_order _m = memory_order_seq_cst) const noexcept
450 {
451 _Tp tmp;
452@@ -992,7 +991,7 @@
453 return tmp;
454 }
455
456- __always_inline _Tp
457+ __libitm_always_inline _Tp
458 load(memory_order _m = memory_order_seq_cst) const volatile noexcept
459 {
460 _Tp tmp;
461@@ -1000,7 +999,7 @@
462 return tmp;
463 }
464
465- __always_inline _Tp
466+ __libitm_always_inline _Tp
467 exchange(_Tp __i, memory_order _m = memory_order_seq_cst) noexcept
468 {
469 _Tp tmp;
470@@ -1008,7 +1007,7 @@
471 return tmp;
472 }
473
474- __always_inline _Tp
475+ __libitm_always_inline _Tp
476 exchange(_Tp __i,
477 memory_order _m = memory_order_seq_cst) volatile noexcept
478 {
479@@ -1017,50 +1016,50 @@
480 return tmp;
481 }
482
483- __always_inline bool
484+ __libitm_always_inline bool
485 compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s,
486 memory_order __f) noexcept
487 {
488 return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f);
489 }
490
491- __always_inline bool
492+ __libitm_always_inline bool
493 compare_exchange_weak(_Tp& __e, _Tp __i, memory_order __s,
494 memory_order __f) volatile noexcept
495 {
496 return __atomic_compare_exchange(&_M_i, &__e, &__i, true, __s, __f);
497 }
498
499- __always_inline bool
500+ __libitm_always_inline bool
501 compare_exchange_weak(_Tp& __e, _Tp __i,
502 memory_order __m = memory_order_seq_cst) noexcept
503 { return compare_exchange_weak(__e, __i, __m, __m); }
504
505- __always_inline bool
506+ __libitm_always_inline bool
507 compare_exchange_weak(_Tp& __e, _Tp __i,
508 memory_order __m = memory_order_seq_cst) volatile noexcept
509 { return compare_exchange_weak(__e, __i, __m, __m); }
510
511- __always_inline bool
512+ __libitm_always_inline bool
513 compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s,
514 memory_order __f) noexcept
515 {
516 return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f);
517 }
518
519- __always_inline bool
520+ __libitm_always_inline bool
521 compare_exchange_strong(_Tp& __e, _Tp __i, memory_order __s,
522 memory_order __f) volatile noexcept
523 {
524 return __atomic_compare_exchange(&_M_i, &__e, &__i, false, __s, __f);
525 }
526
527- __always_inline bool
528+ __libitm_always_inline bool
529 compare_exchange_strong(_Tp& __e, _Tp __i,
530 memory_order __m = memory_order_seq_cst) noexcept
531 { return compare_exchange_strong(__e, __i, __m, __m); }
532
533- __always_inline bool
534+ __libitm_always_inline bool
535 compare_exchange_strong(_Tp& __e, _Tp __i,
536 memory_order __m = memory_order_seq_cst) volatile noexcept
537 { return compare_exchange_strong(__e, __i, __m, __m); }
538@@ -1153,46 +1152,46 @@
539 is_lock_free() const volatile noexcept
540 { return _M_b.is_lock_free(); }
541
542- __always_inline void
543+ __libitm_always_inline void
544 store(__pointer_type __p,
545 memory_order __m = memory_order_seq_cst) noexcept
546 { return _M_b.store(__p, __m); }
547
548- __always_inline void
549+ __libitm_always_inline void
550 store(__pointer_type __p,
551 memory_order __m = memory_order_seq_cst) volatile noexcept
552 { return _M_b.store(__p, __m); }
553
554- __always_inline __pointer_type
555+ __libitm_always_inline __pointer_type
556 load(memory_order __m = memory_order_seq_cst) const noexcept
557 { return _M_b.load(__m); }
558
559- __always_inline __pointer_type
560+ __libitm_always_inline __pointer_type
561 load(memory_order __m = memory_order_seq_cst) const volatile noexcept
562 { return _M_b.load(__m); }
563
564- __always_inline __pointer_type
565+ __libitm_always_inline __pointer_type
566 exchange(__pointer_type __p,
567 memory_order __m = memory_order_seq_cst) noexcept
568 { return _M_b.exchange(__p, __m); }
569
570- __always_inline __pointer_type
571+ __libitm_always_inline __pointer_type
572 exchange(__pointer_type __p,
573 memory_order __m = memory_order_seq_cst) volatile noexcept
574 { return _M_b.exchange(__p, __m); }
575
576- __always_inline bool
577+ __libitm_always_inline bool
578 compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
579 memory_order __m1, memory_order __m2) noexcept
580 { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
581
582- __always_inline bool
583+ __libitm_always_inline bool
584 compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
585 memory_order __m1,
586 memory_order __m2) volatile noexcept
587 { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
588
589- __always_inline bool
590+ __libitm_always_inline bool
591 compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
592 memory_order __m = memory_order_seq_cst) noexcept
593 {
594@@ -1200,7 +1199,7 @@
595 __calculate_memory_order(__m));
596 }
597
598- __always_inline bool
599+ __libitm_always_inline bool
600 compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
601 memory_order __m = memory_order_seq_cst) volatile noexcept
602 {
603@@ -1208,18 +1207,18 @@
604 __calculate_memory_order(__m));
605 }
606
607- __always_inline bool
608+ __libitm_always_inline bool
609 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
610 memory_order __m1, memory_order __m2) noexcept
611 { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
612
613- __always_inline bool
614+ __libitm_always_inline bool
615 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
616 memory_order __m1,
617 memory_order __m2) volatile noexcept
618 { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
619
620- __always_inline bool
621+ __libitm_always_inline bool
622 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
623 memory_order __m = memory_order_seq_cst) noexcept
624 {
625@@ -1227,7 +1226,7 @@
626 __calculate_memory_order(__m));
627 }
628
629- __always_inline bool
630+ __libitm_always_inline bool
631 compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
632 memory_order __m = memory_order_seq_cst) volatile noexcept
633 {
634@@ -1235,22 +1234,22 @@
635 __calculate_memory_order(__m));
636 }
637
638- __always_inline __pointer_type
639+ __libitm_always_inline __pointer_type
640 fetch_add(ptrdiff_t __d,
641 memory_order __m = memory_order_seq_cst) noexcept
642 { return _M_b.fetch_add(__d, __m); }
643
644- __always_inline __pointer_type
645+ __libitm_always_inline __pointer_type
646 fetch_add(ptrdiff_t __d,
647 memory_order __m = memory_order_seq_cst) volatile noexcept
648 { return _M_b.fetch_add(__d, __m); }
649
650- __always_inline __pointer_type
651+ __libitm_always_inline __pointer_type
652 fetch_sub(ptrdiff_t __d,
653 memory_order __m = memory_order_seq_cst) noexcept
654 { return _M_b.fetch_sub(__d, __m); }
655
656- __always_inline __pointer_type
657+ __libitm_always_inline __pointer_type
658 fetch_sub(ptrdiff_t __d,
659 memory_order __m = memory_order_seq_cst) volatile noexcept
660 { return _M_b.fetch_sub(__d, __m); }
661@@ -1544,98 +1543,98 @@
662
663
664 // Function definitions, atomic_flag operations.
665- inline __always_inline bool
666+ inline __libitm_always_inline bool
667 atomic_flag_test_and_set_explicit(atomic_flag* __a,
668 memory_order __m) noexcept
669 { return __a->test_and_set(__m); }
670
671- inline __always_inline bool
672+ inline __libitm_always_inline bool
673 atomic_flag_test_and_set_explicit(volatile atomic_flag* __a,
674 memory_order __m) noexcept
675 { return __a->test_and_set(__m); }
676
677- inline __always_inline void
678+ inline __libitm_always_inline void
679 atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept
680 { __a->clear(__m); }
681
682- inline __always_inline void
683+ inline __libitm_always_inline void
684 atomic_flag_clear_explicit(volatile atomic_flag* __a,
685 memory_order __m) noexcept
686 { __a->clear(__m); }
687
688- inline __always_inline bool
689+ inline __libitm_always_inline bool
690 atomic_flag_test_and_set(atomic_flag* __a) noexcept
691 { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
692
693- inline __always_inline bool
694+ inline __libitm_always_inline bool
695 atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept
696 { return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
697
698- inline __always_inline void
699+ inline __libitm_always_inline void
700 atomic_flag_clear(atomic_flag* __a) noexcept
701 { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
702
703- inline __always_inline void
704+ inline __libitm_always_inline void
705 atomic_flag_clear(volatile atomic_flag* __a) noexcept
706 { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
707
708
709 // Function templates generally applicable to atomic types.
710 template<typename _ITp>
711- __always_inline bool
712+ __libitm_always_inline bool
713 atomic_is_lock_free(const atomic<_ITp>* __a) noexcept
714 { return __a->is_lock_free(); }
715
716 template<typename _ITp>
717- __always_inline bool
718+ __libitm_always_inline bool
719 atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept
720 { return __a->is_lock_free(); }
721
722 template<typename _ITp>
723- __always_inline void
724+ __libitm_always_inline void
725 atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept;
726
727 template<typename _ITp>
728- __always_inline void
729+ __libitm_always_inline void
730 atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept;
731
732 template<typename _ITp>
733- __always_inline void
734+ __libitm_always_inline void
735 atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
736 memory_order __m) noexcept
737 { __a->store(__i, __m); }
738
739 template<typename _ITp>
740- __always_inline void
741+ __libitm_always_inline void
742 atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
743 memory_order __m) noexcept
744 { __a->store(__i, __m); }
745
746 template<typename _ITp>
747- __always_inline _ITp
748+ __libitm_always_inline _ITp
749 atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
750 { return __a->load(__m); }
751
752 template<typename _ITp>
753- __always_inline _ITp
754+ __libitm_always_inline _ITp
755 atomic_load_explicit(const volatile atomic<_ITp>* __a,
756 memory_order __m) noexcept
757 { return __a->load(__m); }
758
759 template<typename _ITp>
760- __always_inline _ITp
761+ __libitm_always_inline _ITp
762 atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i,
763 memory_order __m) noexcept
764 { return __a->exchange(__i, __m); }
765
766 template<typename _ITp>
767- __always_inline _ITp
768+ __libitm_always_inline _ITp
769 atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i,
770 memory_order __m) noexcept
771 { return __a->exchange(__i, __m); }
772
773 template<typename _ITp>
774- __always_inline bool
775+ __libitm_always_inline bool
776 atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a,
777 _ITp* __i1, _ITp __i2,
778 memory_order __m1,
779@@ -1643,7 +1642,7 @@
780 { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
781
782 template<typename _ITp>
783- __always_inline bool
784+ __libitm_always_inline bool
785 atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a,
786 _ITp* __i1, _ITp __i2,
787 memory_order __m1,
788@@ -1651,7 +1650,7 @@
789 { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
790
791 template<typename _ITp>
792- __always_inline bool
793+ __libitm_always_inline bool
794 atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a,
795 _ITp* __i1, _ITp __i2,
796 memory_order __m1,
797@@ -1659,7 +1658,7 @@
798 { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); }
799
800 template<typename _ITp>
801- __always_inline bool
802+ __libitm_always_inline bool
803 atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a,
804 _ITp* __i1, _ITp __i2,
805 memory_order __m1,
806@@ -1668,37 +1667,37 @@
807
808
809 template<typename _ITp>
810- __always_inline void
811+ __libitm_always_inline void
812 atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept
813 { atomic_store_explicit(__a, __i, memory_order_seq_cst); }
814
815 template<typename _ITp>
816- __always_inline void
817+ __libitm_always_inline void
818 atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept
819 { atomic_store_explicit(__a, __i, memory_order_seq_cst); }
820
821 template<typename _ITp>
822- __always_inline _ITp
823+ __libitm_always_inline _ITp
824 atomic_load(const atomic<_ITp>* __a) noexcept
825 { return atomic_load_explicit(__a, memory_order_seq_cst); }
826
827 template<typename _ITp>
828- __always_inline _ITp
829+ __libitm_always_inline _ITp
830 atomic_load(const volatile atomic<_ITp>* __a) noexcept
831 { return atomic_load_explicit(__a, memory_order_seq_cst); }
832
833 template<typename _ITp>
834- __always_inline _ITp
835+ __libitm_always_inline _ITp
836 atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept
837 { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
838
839 template<typename _ITp>
840- __always_inline _ITp
841+ __libitm_always_inline _ITp
842 atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept
843 { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
844
845 template<typename _ITp>
846- __always_inline bool
847+ __libitm_always_inline bool
848 atomic_compare_exchange_weak(atomic<_ITp>* __a,
849 _ITp* __i1, _ITp __i2) noexcept
850 {
851@@ -1708,7 +1707,7 @@
852 }
853
854 template<typename _ITp>
855- __always_inline bool
856+ __libitm_always_inline bool
857 atomic_compare_exchange_weak(volatile atomic<_ITp>* __a,
858 _ITp* __i1, _ITp __i2) noexcept
859 {
860@@ -1718,7 +1717,7 @@
861 }
862
863 template<typename _ITp>
864- __always_inline bool
865+ __libitm_always_inline bool
866 atomic_compare_exchange_strong(atomic<_ITp>* __a,
867 _ITp* __i1, _ITp __i2) noexcept
868 {
869@@ -1728,7 +1727,7 @@
870 }
871
872 template<typename _ITp>
873- __always_inline bool
874+ __libitm_always_inline bool
875 atomic_compare_exchange_strong(volatile atomic<_ITp>* __a,
876 _ITp* __i1, _ITp __i2) noexcept
877 {
878@@ -1742,158 +1741,158 @@
879 // intergral types as specified in the standard, excluding address
880 // types.
881 template<typename _ITp>
882- __always_inline _ITp
883+ __libitm_always_inline _ITp
884 atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i,
885 memory_order __m) noexcept
886 { return __a->fetch_add(__i, __m); }
887
888 template<typename _ITp>
889- __always_inline _ITp
890+ __libitm_always_inline _ITp
891 atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
892 memory_order __m) noexcept
893 { return __a->fetch_add(__i, __m); }
894
895 template<typename _ITp>
896- __always_inline _ITp
897+ __libitm_always_inline _ITp
898 atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i,
899 memory_order __m) noexcept
900 { return __a->fetch_sub(__i, __m); }
901
902 template<typename _ITp>
903- __always_inline _ITp
904+ __libitm_always_inline _ITp
905 atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
906 memory_order __m) noexcept
907 { return __a->fetch_sub(__i, __m); }
908
909 template<typename _ITp>
910- __always_inline _ITp
911+ __libitm_always_inline _ITp
912 atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i,
913 memory_order __m) noexcept
914 { return __a->fetch_and(__i, __m); }
915
916 template<typename _ITp>
917- __always_inline _ITp
918+ __libitm_always_inline _ITp
919 atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
920 memory_order __m) noexcept
921 { return __a->fetch_and(__i, __m); }
922
923 template<typename _ITp>
924- __always_inline _ITp
925+ __libitm_always_inline _ITp
926 atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i,
927 memory_order __m) noexcept
928 { return __a->fetch_or(__i, __m); }
929
930 template<typename _ITp>
931- __always_inline _ITp
932+ __libitm_always_inline _ITp
933 atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
934 memory_order __m) noexcept
935 { return __a->fetch_or(__i, __m); }
936
937 template<typename _ITp>
938- __always_inline _ITp
939+ __libitm_always_inline _ITp
940 atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i,
941 memory_order __m) noexcept
942 { return __a->fetch_xor(__i, __m); }
943
944 template<typename _ITp>
945- __always_inline _ITp
946+ __libitm_always_inline _ITp
947 atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
948 memory_order __m) noexcept
949 { return __a->fetch_xor(__i, __m); }
950
951 template<typename _ITp>
952- __always_inline _ITp
953+ __libitm_always_inline _ITp
954 atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept
955 { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
956
957 template<typename _ITp>
958- __always_inline _ITp
959+ __libitm_always_inline _ITp
960 atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
961 { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
962
963 template<typename _ITp>
964- __always_inline _ITp
965+ __libitm_always_inline _ITp
966 atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept
967 { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
968
969 template<typename _ITp>
970- __always_inline _ITp
971+ __libitm_always_inline _ITp
972 atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
973 { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
974
975 template<typename _ITp>
976- __always_inline _ITp
977+ __libitm_always_inline _ITp
978 atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept
979 { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
980
981 template<typename _ITp>
982- __always_inline _ITp
983+ __libitm_always_inline _ITp
984 atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
985 { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
986
987 template<typename _ITp>
988- __always_inline _ITp
989+ __libitm_always_inline _ITp
990 atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept
991 { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
992
993 template<typename _ITp>
994- __always_inline _ITp
995+ __libitm_always_inline _ITp
996 atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
997 { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
998
999 template<typename _ITp>
1000- __always_inline _ITp
1001+ __libitm_always_inline _ITp
1002 atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept
1003 { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
1004
1005 template<typename _ITp>
1006- __always_inline _ITp
1007+ __libitm_always_inline _ITp
1008 atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
1009 { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
1010
1011
1012 // Partial specializations for pointers.
1013 template<typename _ITp>
1014- __always_inline _ITp*
1015+ __libitm_always_inline _ITp*
1016 atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
1017 memory_order __m) noexcept
1018 { return __a->fetch_add(__d, __m); }
1019
1020 template<typename _ITp>
1021- __always_inline _ITp*
1022+ __libitm_always_inline _ITp*
1023 atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d,
1024 memory_order __m) noexcept
1025 { return __a->fetch_add(__d, __m); }
1026
1027 template<typename _ITp>
1028- __always_inline _ITp*
1029+ __libitm_always_inline _ITp*
1030 atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
1031 { return __a->fetch_add(__d); }
1032
1033 template<typename _ITp>
1034- __always_inline _ITp*
1035+ __libitm_always_inline _ITp*
1036 atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
1037 { return __a->fetch_add(__d); }
1038
1039 template<typename _ITp>
1040- __always_inline _ITp*
1041+ __libitm_always_inline _ITp*
1042 atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a,
1043 ptrdiff_t __d, memory_order __m) noexcept
1044 { return __a->fetch_sub(__d, __m); }
1045
1046 template<typename _ITp>
1047- __always_inline _ITp*
1048+ __libitm_always_inline _ITp*
1049 atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
1050 memory_order __m) noexcept
1051 { return __a->fetch_sub(__d, __m); }
1052
1053 template<typename _ITp>
1054- __always_inline _ITp*
1055+ __libitm_always_inline _ITp*
1056 atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
1057 { return __a->fetch_sub(__d); }
1058
1059 template<typename _ITp>
1060- __always_inline _ITp*
1061+ __libitm_always_inline _ITp*
1062 atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
1063 { return __a->fetch_sub(__d); }
1064 // @} group atomics