Extend lvalue evaluation in ExprConstant.cpp to handle CK_LValueBitCast (which is completely trivial). PR8836.

llvm-svn: 141604
This commit is contained in:
Eli Friedman
2011-10-11 00:13:24 +00:00
parent fd2d7dcc31
commit ce3e02a343
2 changed files with 7 additions and 0 deletions

View File

@@ -481,7 +481,10 @@ public:
return false;
case CK_NoOp:
case CK_LValueBitCast:
return Visit(E->getSubExpr());
// FIXME: Support CK_DerivedToBase and friends.
}
}

View File

@@ -57,3 +57,7 @@ int foo() { return A::B; }
// PR11040
const int x = 10;
int* y = reinterpret_cast<const char&>(x); // expected-error {{cannot initialize}}
// This isn't an integral constant expression, but make sure it folds anyway.
struct PR8836 { char _; long long a; };
int PR8836test[(__typeof(sizeof(int)))&reinterpret_cast<const volatile char&>((((PR8836*)0)->a))];