diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 69ec081cd0c4f2f99128e7cabf985bb440278fcd..8c11aad83e1c539bc769b244232518c2f38314dd 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 8b2389c7250a4c0cae11c083d5955831a8a5ff0a..74e65c7b96fa7b5bf0985db4282b85fda502f87e 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]; }