]> granicus.if.org Git - clang/commit
[analyzer] Don't inline virtual calls unless we can devirtualize properly.
authorJordan Rose <jordan_rose@apple.com>
Thu, 12 Jul 2012 00:16:25 +0000 (00:16 +0000)
committerJordan Rose <jordan_rose@apple.com>
Thu, 12 Jul 2012 00:16:25 +0000 (00:16 +0000)
commitc36b30c92c78b95fd29fb5d9d6214d737b3bcb02
tree715c5369b56b6b363095e1029133c079668fc9df
parent198871cc90375246d8692680467ff6e810edac36
[analyzer] Don't inline virtual calls unless we can devirtualize properly.

Previously we were using the static type of the base object to inline
methods, whether virtual or non-virtual. Now, we try to see if the base
object has a known type, and if so ask for its implementation of the method.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160094 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/PathSensitive/Calls.h
lib/StaticAnalyzer/Core/Calls.cpp
lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
lib/StaticAnalyzer/Core/MemRegion.cpp
test/Analysis/dynamic-cast.cpp
test/Analysis/inline.cpp [new file with mode: 0644]