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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Started with r11-2704:

    c++: Copy elision and [[no_unique_address]]. [PR93711]

    We don't elide a copy from a function returning a class by value into a
base
    because that can overwrite data laid out in the tail padding of the base
    class; we need to handle [[no_unique_address]] fields the same way, or we
    ICE when the middle-end wants to create a temporary object of a
    TYPE_NEEDS_CONSTRUCTING type.

    This means that we can't always express initialization of a field with
    INIT_EXPR from a TARGET_EXPR the way we usually do, so I needed
    to change several places that were assuming that was sufficient.

    This also fixes 90254, the same problem with C++17 aggregate initialization
    of a base.

Reply via email to