From 1b4be62ad3e153d2e4eda115698cbf33fca09781 Mon Sep 17 00:00:00 2001
From: Jonathan Wakely <jwakely@redhat.com>
Date: Wed, 28 Sep 2016 11:57:46 +0100
Subject: [PATCH] libstdc++/77686 use may_alias for std::function storage

	PR libstdc++/77686
	* include/std/functional (_Any_data): Add may_alias attribute.

From-SVN: r240567
---
 libstdc++-v3/ChangeLog              | 5 +++++
 libstdc++-v3/include/std/functional | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 69ec081cd0c4..8c11aad83e1c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2016-09-28  Jonathan Wakely  <jwakely@redhat.com>
+
+	PR libstdc++/77686
+	* include/std/functional (_Any_data): Add may_alias attribute.
+
 2016-09-27  Jonathan Wakely  <jwakely@redhat.com>
 
 	* doc/xml/manual/status_cxx2017.xml: Update status.
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 8b2389c7250a..74e65c7b96fa 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -1401,7 +1401,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type)
     void (_Undefined_class::*_M_member_pointer)();
   };
 
-  union _Any_data
+  union [[gnu::may_alias]] _Any_data
   {
     void*       _M_access()       { return &_M_pod_data[0]; }
     const void* _M_access() const { return &_M_pod_data[0]; }
-- 
GitLab