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.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
I absolutely buy this. If somebody is to ever implement another ExprEngine, dealing with the lack of a convenient virtual interface will definitely be a negligible problem for them.
clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h | ||
---|---|---|
650 | What's the point of protected if we don't expect anybody to ever inherit from us? |
Comment Actions
I think the buildbot might be failing http://lab.llvm.org:8011/builders/clang-ppc64le-rhel/builds/3664
What's the point of protected if we don't expect anybody to ever inherit from us?