From 76dba7b67a36b2d6311e4ad4714df5dbd39dbebe Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 13 Nov 2008 05:05:34 +0000 Subject: [PATCH] GRExprEngine::VisitInitListExpr: - 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 | 4 ++-- test/Analysis/misc-ps.m | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/Analysis/GRExprEngine.cpp b/lib/Analysis/GRExprEngine.cpp index 9e389e8b12..35577f6232 100644 --- a/lib/Analysis/GRExprEngine.cpp +++ b/lib/Analysis/GRExprEngine.cpp @@ -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; diff --git a/test/Analysis/misc-ps.m b/test/Analysis/misc-ps.m index 0340c027cd..14adf5937e 100644 --- a/test/Analysis/misc-ps.m +++ b/test/Analysis/misc-ps.m @@ -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 }; +} + -- 2.50.1