And even if gcc does, there are plenty of other compilers that DOESN'T, so it's safer to assume that the compiler can't do that unless you are only writing code that is ever compiled in one compiler.
However, I think the constructor/destructor is not the commonly key point of performance - supposedly your object DOES something - and commonly that is where the key performance is. Of course, there are situations where creating & destroying the object is very much what you DO with the object, but it shouldn't be the norm.
--
mats