VS
Once a destructor is invoked for an object, the object's lifetime ends; the behavior is undefined if the destructor is invoked for an object whose lifetime has ended ([basic.life]).
А если оно UB, есть вероятность что вторичный вызов может быть распознан компилятором как UB, а значит он такую ветку может например посчитать вообще unreachable.