OK, let’s consider the NAG output (as I said, I’m not interested in gfortran, which I think it is buggy or at least “suspicious”).
My initial question was: should we call the destructor1 for the ObjectDerived()? NAG does. Still, the question remains: is this conformant to the standard? Indeed, the Cray compiler doesn’t call destructor1 for the ObjectDerived() and you have to go for the second case (ObjectDerivedWithDummyFinal()) to make sure you call destructor1.
Then I’ve tried other compilers: NVHPC and Intel do like NAG.
Do we go for the majority and assume this is what the standard requires?