From 1a7bcc41efb73d80fd45eb71494b073f388d333c Mon Sep 17 00:00:00 2001 From: Jordan Rose Date: Wed, 12 Sep 2012 22:48:08 +0000 Subject: [PATCH] [analyzer] Fix another use of the address of a temporary, like r163402. Again, GCC is more aggressive about reusing temporary space than we are, leading to Release build crashes for this undefined behavior. PR13710 (though it may not be the only problem there) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163747 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/StaticAnalyzer/Core/BugReporter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp index 46acea78a8..6cbed952c9 100644 --- a/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -1280,7 +1280,8 @@ static void GenerateExtensivePathDiagnostic(PathDiagnostic& PD, } if (const BlockEntrance *BE = dyn_cast(&P)) { - if (const CFGStmt *S = BE->getFirstElement().getAs()) { + CFGElement First = BE->getFirstElement(); + if (const CFGStmt *S = First.getAs()) { const Stmt *stmt = S->getStmt(); if (IsControlFlowExpr(stmt)) { // Add the proper context for '&&', '||', and '?'.