Author: Manna, Soumi Date: 2023-08-23T07:57:04-07:00 New Revision: 30c60ec52f1551c07a3dbab0316ddccf356c6663
URL: https://github.com/llvm/llvm-project/commit/30c60ec52f1551c07a3dbab0316ddccf356c6663 DIFF: https://github.com/llvm/llvm-project/commit/30c60ec52f1551c07a3dbab0316ddccf356c6663.diff LOG: [NFC][CLANG] Fix static analyzer bugs about large copy by values Static Analyzer Tool complains about a large function call parameter which is is passed by value in CGBuiltin.cpp file. 1. In CodeGenFunction::EmitSMELdrStr(clang::SVETypeFlags, llvm::SmallVectorImpl<llvm::Value *> &, unsigned int): We are passing parameter TypeFlags of type clang::SVETypeFlags by value. 2. In CodeGenFunction::EmitSMEZero(clang::SVETypeFlags, llvm::SmallVectorImpl<llvm::Value *> &, unsigned int): We are passing parameter TypeFlags of type clang::SVETypeFlags by value. 3. In CodeGenFunction::EmitSMEReadWrite(clang::SVETypeFlags, llvm::SmallVectorImpl<llvm::Value *> &, unsigned int): We are passing parameter TypeFlags of type clang::SVETypeFlags by value. 4. In CodeGenFunction::EmitSMELd1St1(clang::SVETypeFlags, llvm::SmallVectorImpl<llvm::Value *> &, unsigned int): We are passing parameter TypeFlags of type clang::SVETypeFlags by value. I see many places in CGBuiltin.cpp file, we are passing parameter TypeFlags of type clang::SVETypeFlags by reference. clang::SVETypeFlags inherits several other types. This patch passes parameter TypeFlags by reference instead of by value in the function. Reviewed By: tahonermann, sdesmalen Differential Revision: https://reviews.llvm.org/D158522 Added: Modified: clang/lib/CodeGen/CGBuiltin.cpp clang/lib/CodeGen/CodeGenFunction.h Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index d35c4766243caa..a99cf3d82aaed5 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -9515,7 +9515,7 @@ Value *CodeGenFunction::EmitTileslice(Value *Offset, Value *Base) { return Builder.CreateAdd(Base, CastOffset, "tileslice"); } -Value *CodeGenFunction::EmitSMELd1St1(SVETypeFlags TypeFlags, +Value *CodeGenFunction::EmitSMELd1St1(const SVETypeFlags &TypeFlags, SmallVectorImpl<Value *> &Ops, unsigned IntID) { Ops[3] = EmitSVEPredicateCast( @@ -9545,7 +9545,7 @@ Value *CodeGenFunction::EmitSMELd1St1(SVETypeFlags TypeFlags, return Builder.CreateCall(F, NewOps); } -Value *CodeGenFunction::EmitSMEReadWrite(SVETypeFlags TypeFlags, +Value *CodeGenFunction::EmitSMEReadWrite(const SVETypeFlags &TypeFlags, SmallVectorImpl<Value *> &Ops, unsigned IntID) { auto *VecTy = getSVEType(TypeFlags); @@ -9562,7 +9562,7 @@ Value *CodeGenFunction::EmitSMEReadWrite(SVETypeFlags TypeFlags, return Builder.CreateCall(F, Ops); } -Value *CodeGenFunction::EmitSMEZero(SVETypeFlags TypeFlags, +Value *CodeGenFunction::EmitSMEZero(const SVETypeFlags &TypeFlags, SmallVectorImpl<Value *> &Ops, unsigned IntID) { // svzero_za() intrinsic zeros the entire za tile and has no paramters. @@ -9572,7 +9572,7 @@ Value *CodeGenFunction::EmitSMEZero(SVETypeFlags TypeFlags, return Builder.CreateCall(F, Ops); } -Value *CodeGenFunction::EmitSMELdrStr(SVETypeFlags TypeFlags, +Value *CodeGenFunction::EmitSMELdrStr(const SVETypeFlags &TypeFlags, SmallVectorImpl<Value *> &Ops, unsigned IntID) { Function *Cntsb = CGM.getIntrinsic(Intrinsic::aarch64_sme_cntsb); diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index d7e759824c2819..af9ab55cbabd92 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -4292,16 +4292,16 @@ class CodeGenFunction : public CodeGenTypeCache { unsigned IntID); llvm::Value *EmitAArch64SVEBuiltinExpr(unsigned BuiltinID, const CallExpr *E); - llvm::Value *EmitSMELd1St1(SVETypeFlags TypeFlags, + llvm::Value *EmitSMELd1St1(const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl<llvm::Value *> &Ops, unsigned IntID); - llvm::Value *EmitSMEReadWrite(SVETypeFlags TypeFlags, + llvm::Value *EmitSMEReadWrite(const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl<llvm::Value *> &Ops, unsigned IntID); - llvm::Value *EmitSMEZero(SVETypeFlags TypeFlags, + llvm::Value *EmitSMEZero(const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl<llvm::Value *> &Ops, unsigned IntID); - llvm::Value *EmitSMELdrStr(SVETypeFlags TypeFlags, + llvm::Value *EmitSMELdrStr(const SVETypeFlags &TypeFlags, llvm::SmallVectorImpl<llvm::Value *> &Ops, unsigned IntID); llvm::Value *EmitAArch64SMEBuiltinExpr(unsigned BuiltinID, const CallExpr *E); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits