In most cases, this doesn't have much impact: the destructors just call the base class destructor anyway. A few subclasses of ConstantExpr actually store non-trivial data, though. Make sure we clean up appropriately.
This is sort of ugly, but I don't see a good alternative given the constraints.
Issue found by asan buildbots running the testcase for D80330.