Author: Timm Baeder Date: 2026-05-30T16:06:52+02:00 New Revision: 30ec1fa2a9d9b6e0b6af64e93b500321977eafa1
URL: https://github.com/llvm/llvm-project/commit/30ec1fa2a9d9b6e0b6af64e93b500321977eafa1 DIFF: https://github.com/llvm/llvm-project/commit/30ec1fa2a9d9b6e0b6af64e93b500321977eafa1.diff LOG: [clang][bytecode] Reject invalid UnaryOperators (#200394) Added: Modified: clang/lib/AST/ByteCode/Compiler.cpp clang/test/AST/ByteCode/invalid.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ByteCode/Compiler.cpp b/clang/lib/AST/ByteCode/Compiler.cpp index 88515edb660a9..30002103a4649 100644 --- a/clang/lib/AST/ByteCode/Compiler.cpp +++ b/clang/lib/AST/ByteCode/Compiler.cpp @@ -7169,6 +7169,9 @@ static uint32_t getBitWidth(const Expr *E) { template <class Emitter> bool Compiler<Emitter>::VisitUnaryOperator(const UnaryOperator *E) { + if (E->containsErrors()) + return false; + const Expr *SubExpr = E->getSubExpr(); if (SubExpr->getType()->isAnyComplexType()) return this->VisitComplexUnaryOperator(E); diff --git a/clang/test/AST/ByteCode/invalid.cpp b/clang/test/AST/ByteCode/invalid.cpp index 9f157db889a22..9513645a74794 100644 --- a/clang/test/AST/ByteCode/invalid.cpp +++ b/clang/test/AST/ByteCode/invalid.cpp @@ -188,3 +188,13 @@ namespace InvalidCallExpr { return true; } } + +namespace InvalidUnaryOperator { + typedef struct {} S; + void foo() { + S *s = (S *)malloc(sizeof(*s)); // both-error {{use of undeclared identifier 'malloc'}} + S *&sref = s; + for (int i = 0; i < 2; sref++) + ; + } +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
