diff options
| author | Anders Carlsson <andersca@mac.com> | 2008-01-18 02:25:57 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2008-01-18 02:25:57 +0000 |
| commit | 60bfc161a01e470792dd68906231a6bff77c73c0 (patch) | |
| tree | d58a24bd16d4d415a46cc83966dcf536aab6db9b | |
| parent | 159ee39f4d3382165e8374a6879850808509d827 (diff) | |
| download | bcm5719-llvm-60bfc161a01e470792dd68906231a6bff77c73c0.tar.gz bcm5719-llvm-60bfc161a01e470792dd68906231a6bff77c73c0.zip | |
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
| -rw-r--r-- | clang/CodeGen/CGExprAgg.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGen/struct.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/CodeGen/CGExprAgg.cpp b/clang/CodeGen/CGExprAgg.cpp index 5836262175f..3781407f988 100644 --- a/clang/CodeGen/CGExprAgg.cpp +++ b/clang/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/clang/test/CodeGen/struct.c b/clang/test/CodeGen/struct.c index 8f9ecd6080a..be5917a3da9 100644 --- a/clang/test/CodeGen/struct.c +++ b/clang/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 |

