Index: clang/include/clang/Sema/CodeCompleteConsumer.h
===================================================================
--- clang/include/clang/Sema/CodeCompleteConsumer.h
+++ clang/include/clang/Sema/CodeCompleteConsumer.h
@@ -1201,7 +1201,7 @@
   //@{
   /// Process the finalized code-completion results.
   virtual void ProcessCodeCompleteResults(Sema &S,
-                                          CodeCompletionContext Context,
+                                          const CodeCompletionContext &Context,
                                           CodeCompletionResult *Results,
                                           unsigned NumResults) {}
 
@@ -1264,7 +1264,7 @@
         CCTUInfo(std::make_shared<GlobalCodeCompletionAllocator>()) {}
 
   /// Prints the finalized code-completion results.
-  void ProcessCodeCompleteResults(Sema &S, CodeCompletionContext Context,
+  void ProcessCodeCompleteResults(Sema &S, const CodeCompletionContext &Context,
                                   CodeCompletionResult *Results,
                                   unsigned NumResults) override;
 
Index: clang/lib/CodeGen/CGGPUBuiltin.cpp
===================================================================
--- clang/lib/CodeGen/CGGPUBuiltin.cpp
+++ clang/lib/CodeGen/CGGPUBuiltin.cpp
@@ -125,7 +125,7 @@
   }
 }
 
-bool containsNonScalarVarargs(CodeGenFunction *CGF, CallArgList Args) {
+bool containsNonScalarVarargs(CodeGenFunction *CGF, const CallArgList &Args) {
   return llvm::any_of(llvm::drop_begin(Args), [&](const CallArg &A) {
     return !A.getRValue(*CGF).isScalar();
   });
Index: clang/lib/CodeGen/CGNonTrivialStruct.cpp
===================================================================
--- clang/lib/CodeGen/CGNonTrivialStruct.cpp
+++ clang/lib/CodeGen/CGNonTrivialStruct.cpp
@@ -323,7 +323,7 @@
 template <size_t N, size_t... Ints>
 static std::array<Address, N> getParamAddrs(std::index_sequence<Ints...> IntSeq,
                                             std::array<CharUnits, N> Alignments,
-                                            FunctionArgList Args,
+                                            const FunctionArgList &Args,
                                             CodeGenFunction *CGF) {
   return std::array<Address, N>{
       {Address(CGF->Builder.CreateLoad(CGF->GetAddrOfLocalVar(Args[Ints])),
Index: clang/lib/CodeGen/CodeGenModule.h
===================================================================
--- clang/lib/CodeGen/CodeGenModule.h
+++ clang/lib/CodeGen/CodeGenModule.h
@@ -1711,7 +1711,7 @@
 
   /// Emit the module flag metadata used to pass options controlling the
   /// the backend to LLVM.
-  void EmitBackendOptionsMetadata(const CodeGenOptions CodeGenOpts);
+  void EmitBackendOptionsMetadata(const CodeGenOptions &CodeGenOpts);
 
   /// Emits OpenCL specific Metadata e.g. OpenCL version.
   void EmitOpenCLMetadata();
Index: clang/lib/CodeGen/CodeGenModule.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenModule.cpp
+++ clang/lib/CodeGen/CodeGenModule.cpp
@@ -990,7 +990,7 @@
 }
 
 void CodeGenModule::EmitBackendOptionsMetadata(
-    const CodeGenOptions CodeGenOpts) {
+    const CodeGenOptions &CodeGenOpts) {
   if (getTriple().isRISCV()) {
     getModule().addModuleFlag(llvm::Module::Min, "SmallDataLimit",
                               CodeGenOpts.SmallDataLimit);
Index: clang/lib/Frontend/ASTUnit.cpp
===================================================================
--- clang/lib/Frontend/ASTUnit.cpp
+++ clang/lib/Frontend/ASTUnit.cpp
@@ -1952,7 +1952,8 @@
                        |  (1LL << CodeCompletionContext::CCC_ClassOrStructTag);
     }
 
-    void ProcessCodeCompleteResults(Sema &S, CodeCompletionContext Context,
+    void ProcessCodeCompleteResults(Sema &S,
+                                    const CodeCompletionContext &Context,
                                     CodeCompletionResult *Results,
                                     unsigned NumResults) override;
 
@@ -2063,10 +2064,9 @@
   }
 }
 
-void AugmentedCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &S,
-                                            CodeCompletionContext Context,
-                                            CodeCompletionResult *Results,
-                                            unsigned NumResults) {
+void AugmentedCodeCompleteConsumer::ProcessCodeCompleteResults(
+    Sema &S, const CodeCompletionContext &Context,
+    CodeCompletionResult *Results, unsigned NumResults) {
   // Merge the results we were given with the results we cached.
   bool AddedResult = false;
   uint64_t InContexts =
Index: clang/lib/Sema/CodeCompleteConsumer.cpp
===================================================================
--- clang/lib/Sema/CodeCompleteConsumer.cpp
+++ clang/lib/Sema/CodeCompleteConsumer.cpp
@@ -638,8 +638,8 @@
 }
 
 void PrintingCodeCompleteConsumer::ProcessCodeCompleteResults(
-    Sema &SemaRef, CodeCompletionContext Context, CodeCompletionResult *Results,
-    unsigned NumResults) {
+    Sema &SemaRef, const CodeCompletionContext &Context,
+    CodeCompletionResult *Results, unsigned NumResults) {
   std::stable_sort(Results, Results + NumResults);
 
   if (!Context.getPreferredType().isNull())
Index: clang/lib/Sema/SemaType.cpp
===================================================================
--- clang/lib/Sema/SemaType.cpp
+++ clang/lib/Sema/SemaType.cpp
@@ -4553,7 +4553,7 @@
   return false;
 }
 
-static bool IsNoDerefableChunk(DeclaratorChunk Chunk) {
+static bool IsNoDerefableChunk(const DeclaratorChunk &Chunk) {
   return (Chunk.Kind == DeclaratorChunk::Pointer ||
           Chunk.Kind == DeclaratorChunk::Array);
 }
Index: clang/tools/libclang/CIndexCodeCompletion.cpp
===================================================================
--- clang/tools/libclang/CIndexCodeCompletion.cpp
+++ clang/tools/libclang/CIndexCodeCompletion.cpp
@@ -572,8 +572,8 @@
           CCTUInfo(Results.CodeCompletionAllocator), TU(TranslationUnit) {}
     ~CaptureCompletionResults() override { Finish(); }
 
-    void ProcessCodeCompleteResults(Sema &S, 
-                                    CodeCompletionContext Context,
+    void ProcessCodeCompleteResults(Sema &S,
+                                    const CodeCompletionContext &Context,
                                     CodeCompletionResult *Results,
                                     unsigned NumResults) override {
       StoredResults.reserve(StoredResults.size() + NumResults);
Index: clang/unittests/Sema/CodeCompleteTest.cpp
===================================================================
--- clang/unittests/Sema/CodeCompleteTest.cpp
+++ clang/unittests/Sema/CodeCompleteTest.cpp
@@ -54,7 +54,7 @@
         CompletedFuncDecls(CompletedFuncDecls),
         CCTUInfo(std::make_shared<GlobalCodeCompletionAllocator>()) {}
 
-  void ProcessCodeCompleteResults(Sema &S, CodeCompletionContext Context,
+  void ProcessCodeCompleteResults(Sema &S, const CodeCompletionContext &Context,
                                   CodeCompletionResult *Results,
                                   unsigned NumResults) override {
     for (unsigned I = 0; I < NumResults; ++I) {
@@ -89,7 +89,7 @@
       : CodeCompleteConsumer(/*CodeCompleteOpts=*/{}), ResultCtx(ResultCtx),
         CCTUInfo(std::make_shared<GlobalCodeCompletionAllocator>()) {}
 
-  void ProcessCodeCompleteResults(Sema &S, CodeCompletionContext Context,
+  void ProcessCodeCompleteResults(Sema &S, const CodeCompletionContext &Context,
                                   CodeCompletionResult *Results,
                                   unsigned NumResults) override {
     ResultCtx.VisitedNamespaces =