On 04/06/18 17:06 +0100, Jonathan Wakely wrote:
        PR libstdc++/85930
        * include/bits/shared_ptr_base.h (_Sp_make_shared_tag::_S_ti): Align
        the static variable correctly.


And _really_ align it this time, so the alignment-specifier isn't
ignored (with the warning suppressed because it's a system header).

Tested powerpc64le-linux, committed to trunk.

commit 1efe054e03151e0fb53cacb937979f238e531ae1
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Jun 4 22:25:50 2018 +0100

    PR libstdc++/85930 fix misplaced alignment-specifier
    
            PR libstdc++/85930
            * include/bits/shared_ptr_base.h [!__cpp_rtti]: Include <typeinfo>
            unconditionally. Remove redundant declaration.
            [!__cpp_rtti] (_Sp_make_shared_tag::_S_ti): Fix location of
            alignment-specifier.

diff --git a/libstdc++-v3/include/bits/shared_ptr_base.h b/libstdc++-v3/include/bits/shared_ptr_base.h
index 22cb7eb46b1..6c5089afdda 100644
--- a/libstdc++-v3/include/bits/shared_ptr_base.h
+++ b/libstdc++-v3/include/bits/shared_ptr_base.h
@@ -49,9 +49,7 @@
 #ifndef _SHARED_PTR_BASE_H
 #define _SHARED_PTR_BASE_H 1
 
-#if __cpp_rtti
-# include <typeinfo>
-#endif
+#include <typeinfo>
 #include <bits/allocated_ptr.h>
 #include <bits/refwrap.h>
 #include <bits/stl_function.h>
@@ -59,10 +57,6 @@
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
-#if !__cpp_rtti
-  class type_info;
-#endif
-
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #if _GLIBCXX_USE_DEPRECATED
@@ -516,7 +510,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     static const type_info&
     _S_ti() noexcept
     {
-      static constexpr alignas(type_info) _Sp_make_shared_tag __tag;
+      alignas(type_info) static constexpr _Sp_make_shared_tag __tag;
       return reinterpret_cast<const type_info&>(__tag);
     }
 #endif

Reply via email to