[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