-
Notifications
You must be signed in to change notification settings - Fork 184
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8039 from cms-sw/gcc11-M_high_mark-fix
[GCC][PATCH] libstdc++: Mark non-exported function always_inline
- Loading branch information
Showing
3 changed files
with
45 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
From 03af8492bee6243a9d10e78fea1a3e423bd5f9cd Mon Sep 17 00:00:00 2001 | ||
From: Jonathan Wakely <jwakely@redhat.com> | ||
Date: Fri, 27 May 2022 12:43:18 +0100 | ||
Subject: [PATCH] libstdc++: Mark non-exported function always_inline | ||
[PR105671] | ||
|
||
This new function was added for gcc 11.1 but is not exported from the | ||
shared library. Depending on inlining decisions, its callers might get | ||
inlined but an external definition be needed for this function. That | ||
then fails to link. | ||
|
||
Since we can't add the export to the gcc-11 release branch now, mark it | ||
always_inline. We can consider exporting it for gcc-13 if/when we bump | ||
the shared library version (and maybe also for gcc-12 which is currently | ||
at the same version as trunk). For now, the attribute will solve the | ||
problem on all affected branches. The function is small enough that | ||
force-inlining it shouldn't cause problems. | ||
|
||
libstdc++-v3/ChangeLog: | ||
|
||
PR libstdc++/105671 | ||
* include/std/sstream (basic_stringbuf::_M_high_mark): Add | ||
always_inline attribute. | ||
|
||
(cherry picked from commit de57440858591a88e8fd7ba2505ca54546c86021) | ||
--- | ||
libstdc++-v3/include/std/sstream | 1 + | ||
1 file changed, 1 insertion(+) | ||
|
||
diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream | ||
index f21664100ab8..56555ecd98a1 100644 | ||
--- a/libstdc++-v3/include/std/sstream | ||
+++ b/libstdc++-v3/include/std/sstream | ||
@@ -425,6 +425,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 | ||
// This might not be the same character as _M_string.end() because | ||
// basic_stringbuf::overflow might have written to unused capacity | ||
// in _M_string without updating its length. | ||
+ __attribute__((__always_inline__)) | ||
char_type* | ||
_M_high_mark() const _GLIBCXX_NOEXCEPT | ||
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters