https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98326

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |jason at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, shouldn't either the cp/call.c change have been:
-           && ! TREE_ADDRESSABLE (TREE_TYPE (arg)))
+           && ! TREE_ADDRESSABLE (TREE_TYPE (arg))
+           && simple_empty_class_p (TREE_TYPE (arg), arg, INIT_EXPR))
rather than
-           && ! TREE_ADDRESSABLE (TREE_TYPE (arg)))
+           && simple_empty_class_p (TREE_TYPE (arg), arg, INIT_EXPR))
so it would don't try to handle TREE_ADDRESSABLE classes this way?
Or perhaps simple_empty_class_p should punt for TREE_ADDRESSABLE types?
In any case, passing CONSTRUCTOR with TREE_ADDRESSABLE type directly as
argument to function call leads to creating temporaries of the type, which
aren't allowed.

Reply via email to