[Bug c++/112335] missed optimization on reset and assign unique_ptr
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Nov 1 15:51:32 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112335
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
__old_p_6 = MEM[(struct s * &)ps1_2(D)];
MEM[(struct s * &)ps1_2(D)] = 0B;
if (__old_p_6 != 0B)
goto <bb 3>; [53.47%]
else
goto <bb 4>; [46.53%]
<bb 3> [local count: 574129752]:
s::~s (__old_p_6);
operator delete (__old_p_6, 1);
<bb 4> [local count: 1073741824]:
__p_4 = MEM[(struct s * &)ps2_3(D)];
MEM[(struct s * &)ps2_3(D)] = 0B;
__old_p_5 = MEM[(struct s * &)ps1_2(D)];
Well s::~s could touch the reference std::unique_ptr<s> (ps1).
So this could in theory be an invalid optimization.
I am not sure if that is the only issue here though.
More information about the Gcc-bugs
mailing list