------- Comment #2 from zackw at panix dot com 2007-12-14 21:33 ------- Ooh, it gets worse. The spurious diagnostic is a symptom of an incorrect optimization. In normal control flow, the result of get_hash is assigned to a synthetic variable, D.13336, and that variable is used to call operator delete in basic block 14. However, an exception might transfer control to label L1 (not a basic block?!) which calls operator delete on hash$_M_ptr, which has never been initialized.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34470