Skip to content

Commit 2f9a458

Browse files
authored
[WebKit checkers] Treat asm brk as trivial (#155046)
Like other functions which results in abort, treat asm brk instruction as trivial.
1 parent 73b24d2 commit 2f9a458

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

clang/lib/StaticAnalyzer/Checkers/WebKit/PtrTypesSemantics.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,10 @@ class TrivialFunctionAnalysisVisitor
666666
return IsFunctionTrivial(Callee);
667667
}
668668

669+
bool VisitGCCAsmStmt(const GCCAsmStmt *AS) {
670+
return AS->getAsmString() == "brk #0xc471";
671+
}
672+
669673
bool
670674
VisitSubstNonTypeTemplateParmExpr(const SubstNonTypeTemplateParmExpr *E) {
671675
// Non-type template paramter is compile time constant and trivial.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// RUN: %clang_analyze_cc1 -triple arm-darwin -analyzer-checker=alpha.webkit.UncountedCallArgsChecker -verify %s
2+
// expected-no-diagnostics
3+
4+
void crash()
5+
{
6+
__asm__ volatile ("brk #0xc471");
7+
__builtin_unreachable();
8+
}
9+
10+
class SomeObj {
11+
public:
12+
void ref();
13+
void deref();
14+
15+
void someWork() { crash(); }
16+
};
17+
18+
SomeObj* provide();
19+
20+
void doSomeWork() {
21+
provide()->someWork();
22+
}

0 commit comments

Comments
 (0)