[llvm-testresults] buildbot failure in lab.llvm.org on phase1 - sanity
llvmlab-buildmaster at lab.llvm.org
llvmlab-buildmaster at lab.llvm.org
Wed Aug 27 08:31:38 PDT 2014
The Buildbot has detected a new failure on builder phase1 - sanity while building clang-tools-extra.
Full details are available at:
http://lab.llvm.org:8013/builders/phase1%20-%20sanity/builds/4048
Buildbot URL: http://lab.llvm.org:8013/
Buildslave for this Build: macpro1
Build Reason: scheduler
Build Source Stamp: 216551
Blamelist: kremenek
BUILD FAILED: failed
sincerely,
-The Buildbot
================================================================================
CHANGES:
Files:
include/clang/Analysis/AnalysisContext.h
include/clang/Analysis/CodeInjector.h
include/clang/Basic/SourceManager.h
include/clang/Frontend/FrontendAction.h
include/clang/Lex/Preprocessor.h
include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
include/clang/StaticAnalyzer/Frontend/FrontendActions.h
include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
lib/Analysis/AnalysisDeclContext.cpp
lib/Analysis/BodyFarm.cpp
lib/Analysis/BodyFarm.h
lib/Analysis/CMakeLists.txt
lib/Analysis/CodeInjector.cpp
lib/Frontend/CompilerInstance.cpp
lib/Frontend/FrontendAction.cpp
lib/Lex/Preprocessor.cpp
lib/StaticAnalyzer/Core/AnalysisManager.cpp
lib/StaticAnalyzer/Core/BugReporter.cpp
lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
lib/StaticAnalyzer/Frontend/CMakeLists.txt
lib/StaticAnalyzer/Frontend/FrontendActions.cpp
lib/StaticAnalyzer/Frontend/ModelConsumer.cpp
lib/StaticAnalyzer/Frontend/ModelInjector.cpp
lib/StaticAnalyzer/Frontend/ModelInjector.h
test/Analysis/Inputs/Models
test/Analysis/Inputs/Models/modeledFunction.model
test/Analysis/Inputs/Models/notzero.model
test/Analysis/model-file.cpp
On: http://10.1.1.2/svn/llvm-project
For: cfe
At: Wed 27 Aug 2014 08:25:33
Changed By: kremenek
Comments: Add support for the static analyzer to synthesize function implementations from external model files.
Currently the analyzer lazily models some functions using 'BodyFarm',
which constructs a fake function implementation that the analyzer
can simulate that approximates the semantics of the function when
it is called. BodyFarm does this by constructing the AST for
such definitions on-the-fly. One strength of BodyFarm
is that all symbols and types referenced by synthesized function
bodies are contextual adapted to the containing translation unit.
The downside is that these ASTs are hardcoded in Clang's own
source code.
A more scalable model is to allow these models to be defined as source
code in separate "model" files and have the analyzer use those
definitions lazily when a function body is needed. Among other things,
it will allow more customization of the analyzer for specific APIs
and platforms.
This patch provides the initial infrastructure for this feature.
It extends BodyFarm to use an abstract API 'CodeInjector' that can be
used to synthesize function bodies. That 'CodeInjector' is
implemented using a new 'ModelInjector' in libFrontend, which lazily
parses a model file and injects the ASTs into the current translation
unit.
Models are currently found by specifying a 'model-path' as an
analyzer option; if no path is specified the CodeInjector is not
used, thus defaulting to the current behavior in the analyzer.
Models currently contain a single function definition, and can
be found by finding the file <function name>.model. This is an
initial starting point for something more rich, but it bootstraps
this feature for future evolution.
This patch was contributed by Gábor Horváth as part of his
Google Summer of Code project.
Some notes:
- This introduces the notion of a "model file" into
FrontendAction and the Preprocessor. This nomenclature
is specific to the static analyzer, but possibly could be
generalized. Essentially these are sources pulled in
exogenously from the principal translation.
Preprocessor gets a 'InitializeForModelFile' and
'FinalizeForModelFile' which could possibly be hoisted out
of Preprocessor if Preprocessor exposed a new API to
change the PragmaHandlers and some other internal pieces. This
can be revisited.
FrontendAction gets a 'isModelParsingAction()' predicate function
used to allow a new FrontendAction to recycle the Preprocessor
and ASTContext. This name could probably be made something
more general (i.e., not tied to 'model files') at the expense
of losing the intent of why it exists. This can be revisited.
- This is a moderate sized patch; it has gone through some amount of
offline code review. Most of the changes to the non-analyzer
parts are fairly small, and would make little sense without
the analyzer changes.
- Most of the analyzer changes are plumbing, with the interesting
behavior being introduced by ModelInjector.cpp and
ModelConsumer.cpp.
- The new functionality introduced by this change is off-by-default.
It requires an analyzer config option to enable.Properties:
File: clang-tidy/ClangTidy.cpp
On: http://10.1.1.2/svn/llvm-project
For: clang-tools-extra
At: Wed 27 Aug 2014 08:25:33
Changed By: kremenek
Comments: Adjust call 'CreateAnalysisConsumer' due to API tweak.Properties:
LOGS:
More information about the llvm-testresults
mailing list