Assert that the type of the cast is equal to the _unqualified_ type of the subexpression. Fixes a problem spotted by Nuno Lopes.

llvm-svn: 46158
This commit is contained in:
Anders Carlsson 2008-01-18 02:25:57 +00:00
parent 159ee39f4d
commit 60bfc161a0
2 changed files with 10 additions and 1 deletions

View File

@ -142,7 +142,7 @@ void AggExprEmitter::VisitImplicitCastExpr(ImplicitCastExpr *E)
QualType STy = E->getSubExpr()->getType().getCanonicalType();
QualType Ty = E->getType().getCanonicalType();
assert(STy == Ty && "Implicit cast types must be equal");
assert(STy.getUnqualifiedType() == Ty && "Implicit cast types must be equal");
Visit(E->getSubExpr());
}

View File

@ -127,3 +127,12 @@ void f11()
a1 = a2;
a2 = a1;
}
/* Implicit casts (due to const) */
void f12()
{
struct _a a1;
const struct _a a2;
a1 = a2;
}