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
diff --git a/clang/CodeGen/CGExprAgg.cpp b/clang/CodeGen/CGExprAgg.cpp
index 5836262..3781407 100644
--- a/clang/CodeGen/CGExprAgg.cpp
+++ b/clang/CodeGen/CGExprAgg.cpp
@@ -142,7 +142,7 @@
   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/clang/test/CodeGen/struct.c b/clang/test/CodeGen/struct.c
index 8f9ecd6..be5917a 100644
--- a/clang/test/CodeGen/struct.c
+++ b/clang/test/CodeGen/struct.c
@@ -127,3 +127,12 @@
     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