https://github.com/tbaederr updated https://github.com/llvm/llvm-project/pull/111505
>From bca04d7c89573c5ec1272fc2621b9e4acfae997e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <tbae...@redhat.com> Date: Tue, 8 Oct 2024 10:57:14 +0200 Subject: [PATCH] [clang][bytecode] Make sure ia32_bzhi input is an integer --- clang/lib/AST/ByteCode/InterpBuiltin.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp index 72c94e6fad3e0d..98381254886e29 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp @@ -1184,6 +1184,10 @@ static bool interp__builtin_ia32_bzhi(InterpState &S, CodePtr OpPC, const InterpFrame *Frame, const Function *Func, const CallExpr *Call) { + QualType CallType = Call->getType(); + if (!CallType->isIntegerType()) + return false; + PrimType ValT = *S.Ctx.classify(Call->getArg(0)); PrimType IndexT = *S.Ctx.classify(Call->getArg(1)); @@ -1197,7 +1201,7 @@ static bool interp__builtin_ia32_bzhi(InterpState &S, CodePtr OpPC, if (Index < BitWidth) Val.clearHighBits(BitWidth - Index); - pushInteger(S, Val, Call->getType()); + pushInteger(S, Val, CallType); return true; } @@ -1210,7 +1214,7 @@ static bool interp__builtin_ia32_lzcnt(InterpState &S, CodePtr OpPC, return false; APSInt Val = peekToAPSInt(S.Stk, *S.Ctx.classify(Call->getArg(0))); - pushInteger(S, Val.countLeadingZeros(), Call->getType()); + pushInteger(S, Val.countLeadingZeros(), CallType); return true; } @@ -1223,7 +1227,7 @@ static bool interp__builtin_ia32_tzcnt(InterpState &S, CodePtr OpPC, return false; APSInt Val = peekToAPSInt(S.Stk, *S.Ctx.classify(Call->getArg(0))); - pushInteger(S, Val.countTrailingZeros(), Call->getType()); + pushInteger(S, Val.countTrailingZeros(), CallType); return true; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits