The `SubEngine` interface is an interface with only one implementation `EpxrEngine`. Adding other implementations are difficult and very unlikely in the near future. Currently, if anything from `ExprEngine` is to be exposed to other classes it is moved to `SubEngine` which restricts the alternative implementations. The virtual methods are have a slight perofrmance impact. Furthermore, instead of the `LLVM`-style inheritance a native inheritance is used here, which renders `LLVM` functions like e.g. `cast<T>()` unusable here. This patch removes this interface and allows usage of `ExprEngine` directly. Differential Revision: https://reviews.llvm.org/D80548
19 lines
657 B
C++
19 lines
657 B
C++
//== SMTConstraintManager.cpp -----------------------------------*- C++ -*--==//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/StaticAnalyzer/Core/PathSensitive/SMTConstraintManager.h"
|
|
|
|
using namespace clang;
|
|
using namespace ento;
|
|
|
|
std::unique_ptr<ConstraintManager>
|
|
ento::CreateZ3ConstraintManager(ProgramStateManager &StMgr, ExprEngine *Eng) {
|
|
return std::make_unique<SMTConstraintManager>(Eng, StMgr.getSValBuilder());
|
|
}
|