デストラクタ非virtual最適化でGCCが怒る

派生クラスのデストラクタはvirtual指定して仮想関数にしてやらないと、上位クラスポインタからdeleteしたときに正しくデストラクタが呼ばれません。
ただ、上位クラス、下位クラス共にPlain Old Objectよろしくデストラクタの処理が全く必要ない場合があります。
この場合、Baseのデストラクタ仮想化は呼び出しコスト的に避けたいところです。どうせ呼ばれても空処理の関数が呼び出されるだけなので。
そこで、意図的にBase側のデストラクタを非virtualにする(もしくは記述しない)ということをよくやります。

これが最近までは問題なかったのですが、4.0以降のGCCだとhas virtual functions but non-virtual destructorというwarningを出してきます。virtual指定してもちゃんと最適化されるのかなぁとアセンブリを吐かせてみても、デストラクタは呼ばれてしまっているようです。

なにか解決法はないのかなぁ。おそらくそんなに小さい所はキニスルナってことか。