[cfe-commits] r161058 - /cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
Jordan Rose
jordan_rose at apple.com
Tue Jul 31 11:04:49 PDT 2012
Author: jrose
Date: Tue Jul 31 13:04:49 2012
New Revision: 161058
URL: http://llvm.org/viewvc/llvm-project?rev=161058&view=rev
Log:
[analyzer] Add a FIXME about devirtualization in ctors/dtors.
Modified:
cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
Modified: cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp?rev=161058&r1=161057&r2=161058&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/CallEvent.cpp Tue Jul 31 13:04:49 2012
@@ -393,6 +393,10 @@
// If the method is virtual, see if we can find the actual implementation
// based on context-sensitivity.
+ // FIXME: Virtual method calls behave differently when an object is being
+ // constructed or destructed. It's not as simple as "no devirtualization"
+ // because a /partially/ constructed object can be referred to through a
+ // base pointer. We'll eventually want to use DynamicTypeInfo here.
if (const CXXMethodDecl *Devirtualized = devirtualize(MD, getCXXThisVal()))
return Devirtualized;
@@ -527,6 +531,10 @@
// If the method is virtual, see if we can find the actual implementation
// based on context-sensitivity.
+ // FIXME: Virtual method calls behave differently when an object is being
+ // constructed or destructed. It's not as simple as "no devirtualization"
+ // because a /partially/ constructed object can be referred to through a
+ // base pointer. We'll eventually want to use DynamicTypeInfo here.
if (const CXXMethodDecl *Devirtualized = devirtualize(MD, getCXXThisVal()))
return Devirtualized;
More information about the cfe-commits
mailing list