[cfe-commits] PATCH: Adds basic support for typeid to CFG

Ted Kremenek kremenek at apple.com
Wed Apr 13 18:44:20 PDT 2011

On Apr 13, 2011, at 1:27 AM, Chandler Carruth wrote:

> Hello,
> This patch appears to add 'typeid' support to the CFG. I wrote it while working on r129431, before remembering that -Wuninitialized uses its own custom CFG builder.
> Unfortunately, I'm not certain if the patch adds support in the desired manner (I grouped code with similar code for handling sizeof, etc., rather than with C++-specific bits of the code). Also, I'm not sure how best to write a test for this. A pointer or two in the right direction would help there.
> <add-typeid-to-cfg.patch>_______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Hi Chandler,

+      if (cast<CXXRecordDecl>(Record->getDecl())->isPolymorphic())
+        addStmt(E->getExprOperand());
+  }

Instead of 'addStmt', I think this only needs to be 'Visit'.  'addStmt' is only needed when we want to force the expression to be listed in the CFGBlock, whereas Visit() causes us to do a recursive walk, adding Stmts to the CFGBlock as necessary. 

Also, this should probably be:

  return Visit(E->getExprOperand())

as 'Block' and the return value of that call are not guaranteed to be the same.  I think leaving 'return Block' at the end is fine.

More information about the cfe-commits mailing list