[cfe-commits] r143491 - in /cfe/trunk: lib/AST/ExprConstant.cpp test/SemaCXX/constant-expression-cxx11.cpp
Richard Smith
richard-llvm at metafoo.co.uk
Tue Nov 1 13:38:59 PDT 2011
Author: rsmith
Date: Tue Nov 1 15:38:59 2011
New Revision: 143491
URL: http://llvm.org/viewvc/llvm-project?rev=143491&view=rev
Log:
Temporarily disable lvalue-to-rvalue conversions on const pointers while an
apparent miscompile triggered by this is investigated. This is essentially a
revert of r143298.
Modified:
cfe/trunk/lib/AST/ExprConstant.cpp
cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp
Modified: cfe/trunk/lib/AST/ExprConstant.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=143491&r1=143490&r2=143491&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ExprConstant.cpp (original)
+++ cfe/trunk/lib/AST/ExprConstant.cpp Tue Nov 1 15:38:59 2011
@@ -461,7 +461,8 @@
// them are not permitted.
const VarDecl *VD = dyn_cast<VarDecl>(D);
if (!VD || !(IsConstNonVolatile(VD->getType()) || isa<ParmVarDecl>(VD)) ||
- !Type->isLiteralType() || !EvaluateVarDeclInit(Info, VD, Frame, RVal))
+ !(Type->isIntegralOrEnumerationType() || Type->isRealFloatingType()) ||
+ !EvaluateVarDeclInit(Info, VD, Frame, RVal))
return false;
if (isa<ParmVarDecl>(VD) || !VD->getAnyInitializer()->isLValue())
Modified: cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp?rev=143491&r1=143490&r2=143491&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp (original)
+++ cfe/trunk/test/SemaCXX/constant-expression-cxx11.cpp Tue Nov 1 15:38:59 2011
@@ -128,6 +128,7 @@
}
+#if 0
namespace Pointers {
constexpr int f(int n, const int *a, const int *b, const int *c) {
@@ -162,9 +163,10 @@
using check_value = int[1 + Apply(Select(4), 5) + Apply(Select(3), 7)];
using check_value = int[42];
- constexpr int Invalid = Apply(Select(0), 0); // expected-error {{must be initialized by a constant expression}}
+ constexpr int Invalid = Apply(Select(0), 0); // xpected-error {{must be initialized by a constant expression}}
}
+#endif
namespace PointerComparison {
@@ -205,8 +207,10 @@
constexpr bool s5 = &x < &x;
constexpr bool s6 = &x > &x;
+#if 0
constexpr S* sptr = &s;
constexpr bool dyncast = sptr == dynamic_cast<S*>(sptr);
+#endif
extern char externalvar[];
constexpr bool constaddress = (void *)externalvar == (void *)0x4000UL; // expected-error {{must be initialized by a constant expression}}
More information about the cfe-commits
mailing list