From: Anders Carlsson Date: Fri, 18 Jan 2008 02:25:57 +0000 (+0000) Subject: Assert that the type of the cast is equal to the _unqualified_ type of the subexpress... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a46b759d55ca607ef9bb09dd3a089418bb6ee44c;p=clang Assert that the type of the cast is equal to the _unqualified_ type of the subexpression. Fixes a problem spotted by Nuno Lopes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46158 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CodeGen/CGExprAgg.cpp b/CodeGen/CGExprAgg.cpp index 5836262175..3781407f98 100644 --- a/CodeGen/CGExprAgg.cpp +++ b/CodeGen/CGExprAgg.cpp @@ -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()); } diff --git a/test/CodeGen/struct.c b/test/CodeGen/struct.c index 8f9ecd6080..be5917a3da 100644 --- a/test/CodeGen/struct.c +++ b/test/CodeGen/struct.c @@ -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; +} \ No newline at end of file