Index: src/Common/Stats/Time.h
===================================================================
--- src/Common/Stats/Time.h	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
+++ src/Common/Stats/Time.h	(revision 095b99a642c9068d6d432af63ad1a7e1b7fb9ec2)
@@ -9,5 +9,5 @@
 // Author           : Thierry Delisle
 // Created On       : Fri Mar 01 15:14:11 2019
-// Last Modified By :
+// Last Modified By : Andrew Beach
 // Last Modified On :
 // Update Count     :
@@ -41,4 +41,10 @@
 				f();
 			}
+
+			template<typename ret_t = void, typename func_t, typename... arg_t>
+			inline ret_t TimeCall(
+					const char *, func_t func, arg_t&&... arg) {
+				return func(std::forward<arg_t>(arg)...);
+			}
 #		else
 			void StartGlobal();
@@ -59,4 +65,11 @@
 				func();
 			}
+
+			template<typename ret_t = void, typename func_t, typename... arg_t>
+			inline ret_t TimeCall(
+					const char * name, func_t func, arg_t&&... arg) {
+				BlockGuard guard(name);
+				return func(std::forward<arg_t>(arg)...);
+			}
 #		endif
 	}
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
+++ src/SymTab/Validate.cc	(revision 095b99a642c9068d6d432af63ad1a7e1b7fb9ec2)
@@ -375,19 +375,14 @@
 			Stats::Heap::newPass("validate-F");
 			Stats::Time::BlockGuard guard("validate-F");
-			Stats::Time::TimeBlock("Fix Object Type", [&]() {
-				FixObjectType::fix( translationUnit );
-			});
-			Stats::Time::TimeBlock("Array Length", [&]() {
-				ArrayLength::computeLength( translationUnit );
-			});
-			Stats::Time::TimeBlock("Find Special Declarations", [&]() {
-				Validate::findSpecialDecls( translationUnit );
-			});
-			Stats::Time::TimeBlock("Fix Label Address", [&]() {
-				mutateAll( translationUnit, labelAddrFixer );
-			});
-			Stats::Time::TimeBlock("Handle Attributes", [&]() {
-				Validate::handleAttributes( translationUnit );
-			});
+			Stats::Time::TimeCall("Fix Object Type",
+				FixObjectType::fix, translationUnit);
+			Stats::Time::TimeCall("Array Length",
+				ArrayLength::computeLength, translationUnit);
+			Stats::Time::TimeCall("Find Special Declarations",
+				Validate::findSpecialDecls, translationUnit);
+			Stats::Time::TimeCall("Fix Label Address",
+				mutateAll<LabelAddressFixer>, translationUnit, labelAddrFixer);
+			Stats::Time::TimeCall("Handle Attributes",
+				Validate::handleAttributes, translationUnit);
 		}
 	}
