Author: Shafik Yaghmour Date: 2025-06-27T11:00:16-07:00 New Revision: a4be46e0e5bc124f446720337018c555ba38a875
URL: https://github.com/llvm/llvm-project/commit/a4be46e0e5bc124f446720337018c555ba38a875 DIFF: https://github.com/llvm/llvm-project/commit/a4be46e0e5bc124f446720337018c555ba38a875.diff LOG: [Clang][ByteCode][NFC] Misc minor performance fixes (#145988) Static analysis flagged multiple places we could move instead of copy. In one case I realized we could avoid computing the same thing multiple times and did that fix instead. Added: Modified: clang/lib/AST/ByteCode/InterpBuiltin.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/ByteCode/InterpBuiltin.cpp b/clang/lib/AST/ByteCode/InterpBuiltin.cpp index 93002172949a5..5c49e13a581e2 100644 --- a/clang/lib/AST/ByteCode/InterpBuiltin.cpp +++ b/clang/lib/AST/ByteCode/InterpBuiltin.cpp @@ -555,8 +555,8 @@ static bool interp__builtin_isfpclass(InterpState &S, CodePtr OpPC, APSInt FPClassArg = popToAPSInt(S.Stk, FPClassArgT); const Floating &F = S.Stk.pop<Floating>(); - int32_t Result = - static_cast<int32_t>((F.classify() & FPClassArg).getZExtValue()); + int32_t Result = static_cast<int32_t>( + (F.classify() & std::move(FPClassArg)).getZExtValue()); pushInteger(S, Result, Call->getType()); return true; @@ -856,7 +856,7 @@ static bool interp__builtin_overflowop(InterpState &S, CodePtr OpPC, if (!APSInt::isSameValue(Temp, Result)) Overflow = true; - Result = Temp; + Result = std::move(Temp); } // Write Result to ResultPtr and put Overflow on the stack. @@ -1135,17 +1135,17 @@ static bool interp__builtin_is_aligned_up_down(InterpState &S, CodePtr OpPC, if (isIntegralType(FirstArgT)) { const APSInt &Src = popToAPSInt(S.Stk, FirstArgT); - APSInt Align = Alignment.extOrTrunc(Src.getBitWidth()); + APInt AlignMinusOne = Alignment.extOrTrunc(Src.getBitWidth()) - 1; if (BuiltinOp == Builtin::BI__builtin_align_up) { APSInt AlignedVal = - APSInt((Src + (Align - 1)) & ~(Align - 1), Src.isUnsigned()); + APSInt((Src + AlignMinusOne) & ~AlignMinusOne, Src.isUnsigned()); pushInteger(S, AlignedVal, Call->getType()); } else if (BuiltinOp == Builtin::BI__builtin_align_down) { - APSInt AlignedVal = APSInt(Src & ~(Align - 1), Src.isUnsigned()); + APSInt AlignedVal = APSInt(Src & ~AlignMinusOne, Src.isUnsigned()); pushInteger(S, AlignedVal, Call->getType()); } else { assert(*S.Ctx.classify(Call->getType()) == PT_Bool); - S.Stk.push<Boolean>((Src & (Align - 1)) == 0); + S.Stk.push<Boolean>((Src & AlignMinusOne) == 0); } return true; } @@ -1425,7 +1425,7 @@ static bool interp__builtin_ia32_addcarry_subborrow(InterpState &S, QualType CarryOutType = Call->getArg(3)->getType()->getPointeeType(); PrimType CarryOutT = *S.getContext().classify(CarryOutType); - assignInteger(S, CarryOutPtr, CarryOutT, APSInt(Result, true)); + assignInteger(S, CarryOutPtr, CarryOutT, APSInt(std::move(Result), true)); pushInteger(S, CarryOut, Call->getType()); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits