llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Timm Baeder (tbaederr) <details> <summary>Changes</summary> We can only use block pointers here. --- Full diff: https://github.com/llvm/llvm-project/pull/180524.diff 2 Files Affected: - (modified) clang/lib/AST/ByteCode/Context.cpp (+6) - (modified) clang/test/AST/ByteCode/c.c (+6) ``````````diff diff --git a/clang/lib/AST/ByteCode/Context.cpp b/clang/lib/AST/ByteCode/Context.cpp index b4b8939f3fe00..879d51e6a2c3e 100644 --- a/clang/lib/AST/ByteCode/Context.cpp +++ b/clang/lib/AST/ByteCode/Context.cpp @@ -245,6 +245,9 @@ bool Context::evaluateString(State &Parent, const Expr *E, Compiler<EvalEmitter> C(*this, *P, Parent, Stk); auto PtrRes = C.interpretAsPointer(E, [&](const Pointer &Ptr) { + if (!Ptr.isBlockPointer()) + return false; + const Descriptor *FieldDesc = Ptr.getFieldDesc(); if (!FieldDesc->isPrimitiveArray()) return false; @@ -291,6 +294,9 @@ std::optional<uint64_t> Context::evaluateStrlen(State &Parent, const Expr *E) { std::optional<uint64_t> Result; auto PtrRes = C.interpretAsPointer(E, [&](const Pointer &Ptr) { + if (!Ptr.isBlockPointer()) + return false; + const Descriptor *FieldDesc = Ptr.getFieldDesc(); if (!FieldDesc->isPrimitiveArray()) return false; diff --git a/clang/test/AST/ByteCode/c.c b/clang/test/AST/ByteCode/c.c index 9496f8060884a..48a1b36259165 100644 --- a/clang/test/AST/ByteCode/c.c +++ b/clang/test/AST/ByteCode/c.c @@ -433,3 +433,9 @@ void intPtrCmp1(void) { &i + 1 == 2; } // all-warning {{comparison between point // all-warning {{equality comparison result unused}} void intPtrCmp2(void) { 2 == &i + 1; } // all-warning {{comparison between pointer and integer}} \ // all-warning {{equality comparison result unused}} + +/// evaluateStrlen on a non-block pointer. +char *strcpy(char *restrict s1, const char *restrict s2); +void strcpy_fn(char *x) { + strcpy(x, (char*)&strcpy_fn); +} `````````` </details> https://github.com/llvm/llvm-project/pull/180524 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
