diff --git a/src/intrinsic_table.cc b/src/intrinsic_table.cc
index 393f05b..f9d19c7 100644
--- a/src/intrinsic_table.cc
+++ b/src/intrinsic_table.cc
@@ -778,7 +778,7 @@
                 Builder* return_type,
                 std::vector<Parameter> parameters) {
     Overload overload{type, return_type, std::move(parameters), {}};
-    overloads_.emplace_back(overload);
+    overloads_.emplace_back(std::move(overload));
   }
 
   /// Registers an overload with the given intrinsic type, return type Matcher /
@@ -791,7 +791,7 @@
                 std::pair<OpenType, Matcher*> open_type_matcher) {
     Overload overload{
         type, return_type, std::move(parameters), {open_type_matcher}};
-    overloads_.emplace_back(overload);
+    overloads_.emplace_back(std::move(overload));
   }
 };
 
@@ -824,6 +824,9 @@
   auto* ptr_vecN_T = ptr(vecN_T);      // ptr<vecN<T>>
   auto* ptr_vecN_f32 = ptr(vecN_f32);  // ptr<vecN<f32>>
 
+  constexpr size_t overloads_reserve_size = 300;
+  overloads_.reserve(overloads_reserve_size);
+
   // Intrinsic overloads are registered with a call to the Register().
   //
   // The best way to explain Register() and the lookup process is by example.
@@ -1252,6 +1255,9 @@
   Register(I::kTextureLoad, vec4_T, {{t, tex_storage_ro_3d_FT},      {coords, vec3_i32},                                                         }); // NOLINT
 
   // clang-format on
+
+  // If this assert trips, increase the reserve size.
+  TINT_ASSERT(overloads_.size() <= overloads_reserve_size);
 }
 
 /// @returns a human readable string representation of the overload
diff --git a/src/program_builder.h b/src/program_builder.h
index 857bd4d..ae197cc 100644
--- a/src/program_builder.h
+++ b/src/program_builder.h
@@ -955,7 +955,8 @@
   /// @param source the source information
   /// @param val the size value
   /// @returns the size decoration pointer
-  ast::StructMemberSizeDecoration* MemberSize(Source source, uint32_t val) {
+  ast::StructMemberSizeDecoration* MemberSize(const Source& source,
+                                              uint32_t val) {
     return create<ast::StructMemberSizeDecoration>(source, val);
   }
 
@@ -970,7 +971,8 @@
   /// @param source the source information
   /// @param val the align value
   /// @returns the align decoration pointer
-  ast::StructMemberAlignDecoration* MemberAlign(Source source, uint32_t val) {
+  ast::StructMemberAlignDecoration* MemberAlign(const Source& source,
+                                                uint32_t val) {
     return create<ast::StructMemberAlignDecoration>(source, val);
   }
 
@@ -992,7 +994,7 @@
   /// decorations
   /// @returns the function pointer
   template <typename NAME>
-  ast::Function* Func(Source source,
+  ast::Function* Func(const Source& source,
                       NAME&& name,
                       ast::VariableList params,
                       type::Type* type,
@@ -1217,7 +1219,7 @@
   /// @param source the source information
   /// @param builtin the builtin value
   /// @returns the builtin decoration pointer
-  ast::BuiltinDecoration* Builtin(Source source, ast::Builtin builtin) {
+  ast::BuiltinDecoration* Builtin(const Source& source, ast::Builtin builtin) {
     return create<ast::BuiltinDecoration>(source, builtin);
   }
 
@@ -1232,7 +1234,7 @@
   /// @param source the source information
   /// @param location the location value
   /// @returns the location decoration pointer
-  ast::LocationDecoration* Location(Source source, uint32_t location) {
+  ast::LocationDecoration* Location(const Source& source, uint32_t location) {
     return create<ast::LocationDecoration>(source, location);
   }
 
@@ -1247,7 +1249,7 @@
   /// @param source the source information
   /// @param stage the pipeline stage
   /// @returns the stage decoration pointer
-  ast::StageDecoration* Stage(Source source, ast::PipelineStage stage) {
+  ast::StageDecoration* Stage(const Source& source, ast::PipelineStage stage) {
     return create<ast::StageDecoration>(source, stage);
   }
 
