aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2013-01-24 23:15:25 +0000
committerAnna Zaks <ganna@apple.com>2013-01-24 23:15:25 +0000
commit73f0563009a6715a5d3d41f664f5bfab5096d51f (patch)
tree5b904682c40adea95654c34db5e7cd29fac4e8d9
parent33e9500784a6b8dc7f01ae5c85ebf0883fbc6662 (diff)
[analyzer] refactor: access IPAMode through the accessor.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173384 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/StaticAnalyzer/Core/AnalyzerOptions.h4
-rw-r--r--lib/StaticAnalyzer/Core/AnalyzerOptions.cpp2
-rw-r--r--lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp11
3 files changed, 12 insertions, 5 deletions
diff --git a/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h b/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
index 24f33bcda1..25b2f71386 100644
--- a/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+++ b/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
@@ -210,6 +210,10 @@ private:
int getOptionAsInteger(StringRef Name, int DefaultVal);
public:
+ AnalysisIPAMode getIPAMode() const {
+ return IPAMode;
+ }
+
/// Returns the option controlling which C++ member functions will be
/// considered for inlining.
///
diff --git a/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp b/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
index 99f6c2e300..a336f04c8f 100644
--- a/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
+++ b/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp
@@ -22,7 +22,7 @@ using namespace llvm;
bool
AnalyzerOptions::mayInlineCXXMemberFunction(CXXInlineableMemberKind K) {
- if (IPAMode < Inlining)
+ if (getIPAMode() < Inlining)
return false;
if (!CXXMemberInliningMode) {
diff --git a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
index af93baa0a2..6e7701475e 100644
--- a/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
+++ b/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
@@ -558,8 +558,9 @@ bool ExprEngine::inlineCall(const CallEvent &Call, const Decl *D,
case CE_ObjCMessage:
if (!Opts.mayInlineObjCMethod())
return false;
- if (!(getAnalysisManager().options.IPAMode == DynamicDispatch ||
- getAnalysisManager().options.IPAMode == DynamicDispatchBifurcate))
+ AnalyzerOptions &Options = getAnalysisManager().options;
+ if (!(Options.getIPAMode() == DynamicDispatch ||
+ Options.getIPAMode() == DynamicDispatchBifurcate))
return false;
break;
}
@@ -737,14 +738,16 @@ void ExprEngine::defaultEvalCall(NodeBuilder &Bldr, ExplodedNode *Pred,
const Decl *D = RD.getDecl();
if (D) {
if (RD.mayHaveOtherDefinitions()) {
+ AnalyzerOptions &Options = getAnalysisManager().options;
+
// Explore with and without inlining the call.
- if (getAnalysisManager().options.IPAMode == DynamicDispatchBifurcate) {
+ if (Options.getIPAMode() == DynamicDispatchBifurcate) {
BifurcateCall(RD.getDispatchRegion(), *Call, D, Bldr, Pred);
return;
}
// Don't inline if we're not in any dynamic dispatch mode.
- if (getAnalysisManager().options.IPAMode != DynamicDispatch) {
+ if (Options.getIPAMode() != DynamicDispatch) {
conservativeEvalCall(*Call, Bldr, Pred, State);
return;
}