More thorough tests are required but theoretically speaking the determinism can cost cycles. Most modern GCs do not emit write barriers for stack slots (this is true for Nim's GC too) but C++ like overloaded assignments/moves do not distinguish between stack slots and heap slots... The different solutions to get memory safety are really not all that different, you need to track the dangerous pointers somehow and most static analysis quickly need to give up. ("Of course things can escape the local scopes, that's why I'm using a **heap** in the first place.")
The fact that the default allocation strategy changes from "thread local" to "can be shared between threads" does not help either.