diff options
-rw-r--r-- | include/clang/AST/Expr.h | 4 | ||||
-rw-r--r-- | test/SemaCXX/references.cpp | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index fb603165d6..7e67dde57b 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -1974,7 +1974,6 @@ private: // These should not have an inheritance path. case CK_BitCast: - case CK_LValueBitCast: case CK_Dynamic: case CK_ToUnion: case CK_ArrayToPointerDecay: @@ -2007,13 +2006,14 @@ private: case CK_Dependent: case CK_Unknown: case CK_NoOp: - case CK_UserDefinedConversion: case CK_PointerToBoolean: case CK_IntegralToBoolean: case CK_FloatingToBoolean: case CK_MemberPointerToBoolean: case CK_FloatingComplexToBoolean: case CK_IntegralComplexToBoolean: + case CK_LValueBitCast: // -> bool& + case CK_UserDefinedConversion: // operator bool() assert(path_empty() && "Cast kind should not have a base path!"); break; } diff --git a/test/SemaCXX/references.cpp b/test/SemaCXX/references.cpp index 996e7da90b..ab44e78453 100644 --- a/test/SemaCXX/references.cpp +++ b/test/SemaCXX/references.cpp @@ -130,3 +130,7 @@ namespace PR7149 { X0< const int[1]> c(p1); } } + +namespace PR8608 { + bool& f(unsigned char& c) { return (bool&)c; } +} |