Artem Dergachev 516837f2a1 [analyzer] Enable analysis of WebKit "unified sources".
Normally the analyzer begins path-sensitive analysis from functions within
the main file, even though the path is allowed to go through any functions
within the translation unit.

When a recent version of WebKit is compiled, the "unified sources" technique
is used, that assumes #including multiple code files into a single main file.
Such file would have no functions defined in it, so the analyzer wouldn't be
able to find any entry points for path-sensitive analysis.

This patch pattern-matches unified file names that are similar to those
used by WebKit and allows the analyzer to find entry points in the included
code files. A more aggressive/generic approach is being planned as well.

Differential Revision: https://reviews.llvm.org/D45839

llvm-svn: 330876
2018-04-25 21:51:26 +00:00

26 lines
667 B
C++

// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
// This test tests that the warning is here when it is included from
// the unified sources file. The run-line in this file is there
// only to suppress LIT warning for the complete lack of run-line.
int testNullDereference() {
int *x = 0;
return *x; // expected-warning{{}}
}
// Let's see if the container inlining heuristic still works.
class ContainerInCodeFile {
class Iterator {
};
public:
Iterator begin() const;
Iterator end() const;
int method() { return 0; }
};
int testContainerMethodInCodeFile(ContainerInCodeFile Cont) {
return 1 / Cont.method(); // expected-warning{{}}
}