tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, tahonermann, shafik. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
I really don't know much about these, so limited tests included. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D141194 Files: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/test/AST/Interp/literals.cpp Index: clang/test/AST/Interp/literals.cpp =================================================================== --- clang/test/AST/Interp/literals.cpp +++ clang/test/AST/Interp/literals.cpp @@ -90,6 +90,11 @@ static_assert(p != nullptr, ""); static_assert(*p == 10, ""); +constexpr const void *cp = (void *)p; +// FIXME: This should be an error in the new interpreter. +constexpr const int *pm = (int*)cp; // ref-error {{ must be initialized by a constant expression}} \ + // ref-note {{cast from 'const void *' is not allowed}} + constexpr const int* getIntPointer() { return &m; } Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -150,6 +150,7 @@ case CK_NonAtomicToAtomic: case CK_NoOp: case CK_UserDefinedConversion: + case CK_BitCast: return this->visit(SubExpr); case CK_IntegralToBoolean:
Index: clang/test/AST/Interp/literals.cpp =================================================================== --- clang/test/AST/Interp/literals.cpp +++ clang/test/AST/Interp/literals.cpp @@ -90,6 +90,11 @@ static_assert(p != nullptr, ""); static_assert(*p == 10, ""); +constexpr const void *cp = (void *)p; +// FIXME: This should be an error in the new interpreter. +constexpr const int *pm = (int*)cp; // ref-error {{ must be initialized by a constant expression}} \ + // ref-note {{cast from 'const void *' is not allowed}} + constexpr const int* getIntPointer() { return &m; } Index: clang/lib/AST/Interp/ByteCodeExprGen.cpp =================================================================== --- clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -150,6 +150,7 @@ case CK_NonAtomicToAtomic: case CK_NoOp: case CK_UserDefinedConversion: + case CK_BitCast: return this->visit(SubExpr); case CK_IntegralToBoolean:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits