[Bug libstdc++/77686] [6/7 Regression] wrong code on arm-linux-gnueabi and arm-linux-gnueabihf
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 27 10:05:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77686
--- Comment #13 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #12)
> Index: libstdc++-v3/include/std/functional
> ===================================================================
> --- libstdc++-v3/include/std/functional (revision 240521)
> +++ libstdc++-v3/include/std/functional (working copy)
> @@ -1418,7 +1418,7 @@ _GLIBCXX_MEM_FN_TRAITS(&&, false_type, t
>
> _Nocopy_types _M_unused;
> char _M_pod_data[sizeof(_Nocopy_types)];
> - };
> + } __attribute__((may_alias));
>
> enum _Manager_operation
> {
>
> fixes this testcase. As std::swap takes reference args I suppose it should
> reliably work to prevent the issue.
I think this is the right fix. IIUC this is a valid use of may_alias, as the
whole point of _Any_data is that it can alias an unbounded set of types.
More information about the Gcc-bugs
mailing list