r364605 - [analyzer] Fix clang-tidy crash on GCCAsmStmt
Nathan Huckleberry via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 27 15:46:40 PDT 2019
Author: nathan-huckleberry
Date: Thu Jun 27 15:46:40 2019
New Revision: 364605
URL: http://llvm.org/viewvc/llvm-project?rev=364605&view=rev
Log:
[analyzer] Fix clang-tidy crash on GCCAsmStmt
Summary:
Added entry in switch statement to recognize GCCAsmStmt
as a possible block terminator.
Handling to build CFG using GCCAsmStmt was already implemented.
Reviewers: nickdesaulniers, george.karpenkov, NoQ
Reviewed By: nickdesaulniers, NoQ
Subscribers: xbolva00, tmroeder, xazax.hun, baloghadamsoftware, szepet, a.sidorin, mikhail.ramalho, Szelethus, donat.nagy, dkrupp, Charusso, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D63533
Added:
cfe/trunk/test/Analysis/egraph-asm-goto-no-crash.cpp
Modified:
cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp
Modified: cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp?rev=364605&r1=364604&r2=364605&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/CoreEngine.cpp Thu Jun 27 15:46:40 2019
@@ -396,6 +396,11 @@ void CoreEngine::HandleBlockExit(const C
case Stmt::WhileStmtClass:
HandleBranch(cast<WhileStmt>(Term)->getCond(), Term, B, Pred);
return;
+
+ case Stmt::GCCAsmStmtClass:
+ assert(cast<GCCAsmStmt>(Term)->isAsmGoto() && "Encountered GCCAsmStmt without labels");
+ // TODO: Handle jumping to labels
+ return;
}
}
Added: cfe/trunk/test/Analysis/egraph-asm-goto-no-crash.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/egraph-asm-goto-no-crash.cpp?rev=364605&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/egraph-asm-goto-no-crash.cpp (added)
+++ cfe/trunk/test/Analysis/egraph-asm-goto-no-crash.cpp Thu Jun 27 15:46:40 2019
@@ -0,0 +1,26 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -verify %s
+
+// expected-no-diagnostics
+
+void clang_analyzer_warnIfReached();
+
+void testAsmGoto() {
+ asm goto("xor %0, %0\n je %l[label1]\n jl %l[label2]"
+ : /* no outputs */
+ : /* inputs */
+ : /* clobbers */
+ : label1, label2 /* any labels used */);
+
+ // FIXME: Should be reachable.
+ clang_analyzer_warnIfReached();
+
+ label1:
+ // FIXME: Should be reachable.
+ clang_analyzer_warnIfReached();
+ return;
+
+ label2:
+ // FIXME: Should be reachable.
+ clang_analyzer_warnIfReached();
+ return;
+}
More information about the cfe-commits
mailing list