On Oct 29, 2008, at 8:58 PM, Zhongxing Xu wrote:

<Not certain if we need E->IngoreParens()->getInit().

Perhaps. We'd better have a consistent Parenthesis handle scheme. The current one looks ad hoc (or I haven't get it from the code?).

I realized that it's actually not needed. Visit() just ignores ParenExprs and visits the subexpression, and GetSVal also ignores ParenExprs and looks at their children.

+
+  if (Loc::IsLocType(T) || T->isIntegerType()) {
+    // FIXME: to be implemented.
+    MakeNode(Dst, E, Pred, state);
+    return;
+  }

Is this possible?  Can InitListExpr have one of these types?

There is one example in test/Analysis/stack-addr-ps.c. In the last function.

Right! It seems to me that in this case the InitListExpr will contain only 1 scalar value, and we should just return the SVal for that. So something like this:

if (Loc::isLocType(T) || T->isIntegerType()) {
  assert (E->getNumInits() == 1);
  NodeSet Tmp;
  Expr* Init = E->getInit(0);
  Visit(Tmp, Init, Pred, state);
  for (NodeSet::iterator I=Tmp.begin(), EI=Tmp.end(); I!+EI; ++I)
   MakeNode(Dst, E, *I, SetSVal(state, Ex, GetSVal(state, Init)));
}


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to