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.
///
bool
AnalyzerOptions::mayInlineCXXMemberFunction(CXXInlineableMemberKind K) {
- if (IPAMode < Inlining)
+ if (getIPAMode() < Inlining)
return false;
if (!CXXMemberInliningMode) {
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;
}
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;
}