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