GRExprEngine::VisitInitListExpr:

- Don't crash on vector types.
- Handle typedefs.

llvm-svn: 59220
This commit is contained in:
Ted Kremenek 2008-11-13 05:05:34 +00:00
parent ed90e701f0
commit 45698bf05f
2 changed files with 10 additions and 2 deletions

View 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;

View 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 };
}