http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53147
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-04-28 10:05:26 UTC --- [/var/tmp/llvm/llvm/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp : 172:56] D.147621 = clang::CFGBlock::front (block); [/var/tmp/llvm/llvm/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp : 172:56] try { [/var/tmp/llvm/llvm/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp : 172:56] cstmt = clang::CFGElement::getAs<clang::CFGStmt> ([/var/tmp/llvm/llvm/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp : 172] &D.147621); const CFGStmt *cstmt = block->front().getAs<CFGStmt>(); That right there I think is the cause of the issue. block->front() returns a temp variable which ends its life after the statement ends.