]> granicus.if.org Git - clang/commitdiff
GRExprEngine::VisitInitListExpr:
authorTed Kremenek <kremenek@apple.com>
Thu, 13 Nov 2008 05:05:34 +0000 (05:05 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 13 Nov 2008 05:05:34 +0000 (05:05 +0000)
- Don't crash on vector types.
- Handle typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59220 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/GRExprEngine.cpp
test/Analysis/misc-ps.m

index 9e389e8b1211ea28ba615ae3cd359fb81cd9f96b..35577f62320622a4761a5b0480fd41267a930df4 100644 (file)
@@ -1777,7 +1777,7 @@ void GRExprEngine::VisitInitListExpr(InitListExpr* E, NodeTy* Pred,
                                      NodeSet& Dst) {
 
   const GRState* state = GetState(Pred);
-  QualType T = E->getType();
+  QualType T = getContext().getCanonicalType(E->getType());
   unsigned NumInitElements = E->getNumInits();  
 
   if (T->isArrayType() || T->isStructureType()) {
@@ -1847,7 +1847,7 @@ void GRExprEngine::VisitInitListExpr(InitListExpr* E, NodeTy* Pred,
     return;
   }
 
-  if (T->isUnionType()) {
+  if (T->isUnionType() || T->isVectorType()) {
     // FIXME: to be implemented.
     MakeNode(Dst, E, Pred, state);
     return;
index 0340c027cd213b336a15b61be3da66c350b6aab1..14adf5937edb5744a82a5faec74999de48e58c10 100644 (file)
@@ -56,3 +56,11 @@ void checkaccess_union() {
       ).__i))) & 0xff00) >> 8) == 1)
         ret = 1;
 }
+
+// InitListExpr processing
+
+typedef float __m128 __attribute__((__vector_size__(16), __may_alias__));
+__m128 return128() {
+  return __extension__(__m128) { 0.0f, 0.0f, 0.0f, 0.0f };
+}
+