diff --git a/Makefile b/Makefile
index 5100c7fda01cb2503911abb44d31a50d7f8602a9..a28a27c0dae1c6621c92d0cfe6d16754067f3e57 100644
--- a/Makefile
+++ b/Makefile
@@ -95,6 +95,42 @@ LDXX_opt = $(DEFAULT_CXX)
 CPPFLAGS_opt = -O2
 DEFINES_opt = NDEBUG
 
+VALID_CONFIG_asan-trace-cmp = 1
+REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1
+CC_asan-trace-cmp = clang
+CXX_asan-trace-cmp = clang++
+LD_asan-trace-cmp = clang
+LDXX_asan-trace-cmp = clang++
+CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_asan-trace-cmp = -fsanitize=address
+
+VALID_CONFIG_dbg = 1
+CC_dbg = $(DEFAULT_CC)
+CXX_dbg = $(DEFAULT_CXX)
+LD_dbg = $(DEFAULT_CC)
+LDXX_dbg = $(DEFAULT_CXX)
+CPPFLAGS_dbg = -O0
+DEFINES_dbg = _DEBUG DEBUG
+
+VALID_CONFIG_asan = 1
+REQUIRE_CUSTOM_LIBRARIES_asan = 1
+CC_asan = clang
+CXX_asan = clang++
+LD_asan = clang
+LDXX_asan = clang++
+CPPFLAGS_asan = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_asan = -fsanitize=address
+
+VALID_CONFIG_msan = 1
+REQUIRE_CUSTOM_LIBRARIES_msan = 1
+CC_msan = clang
+CXX_msan = clang++
+LD_msan = clang
+LDXX_msan = clang++
+CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
+DEFINES_msan = NDEBUG
+
 VALID_CONFIG_basicprof = 1
 CC_basicprof = $(DEFAULT_CC)
 CXX_basicprof = $(DEFAULT_CXX)
@@ -121,22 +157,25 @@ LDXX_asan-noleaks = clang++
 CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
 LDFLAGS_asan-noleaks = -fsanitize=address
 
-VALID_CONFIG_asan-trace-cmp = 1
-REQUIRE_CUSTOM_LIBRARIES_asan-trace-cmp = 1
-CC_asan-trace-cmp = clang
-CXX_asan-trace-cmp = clang++
-LD_asan-trace-cmp = clang
-LDXX_asan-trace-cmp = clang++
-CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_asan-trace-cmp = -fsanitize=address
+VALID_CONFIG_ubsan = 1
+REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
+CC_ubsan = clang
+CXX_ubsan = clang++
+LD_ubsan = clang
+LDXX_ubsan = clang++
+CPPFLAGS_ubsan = -O0 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
+LDFLAGS_ubsan = -fsanitize=undefined,unsigned-integer-overflow
+DEFINES_ubsan = NDEBUG
 
-VALID_CONFIG_dbg = 1
-CC_dbg = $(DEFAULT_CC)
-CXX_dbg = $(DEFAULT_CXX)
-LD_dbg = $(DEFAULT_CC)
-LDXX_dbg = $(DEFAULT_CXX)
-CPPFLAGS_dbg = -O0
-DEFINES_dbg = _DEBUG DEBUG
+VALID_CONFIG_tsan = 1
+REQUIRE_CUSTOM_LIBRARIES_tsan = 1
+CC_tsan = clang
+CXX_tsan = clang++
+LD_tsan = clang
+LDXX_tsan = clang++
+CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
+LDFLAGS_tsan = -fsanitize=thread
+DEFINES_tsan = GRPC_TSAN
 
 VALID_CONFIG_stapprof = 1
 CC_stapprof = $(DEFAULT_CC)
@@ -164,44 +203,13 @@ CPPFLAGS_memcheck = -O0
 LDFLAGS_memcheck = -rdynamic
 DEFINES_memcheck = _DEBUG DEBUG
 
-VALID_CONFIG_asan = 1
-REQUIRE_CUSTOM_LIBRARIES_asan = 1
-CC_asan = clang
-CXX_asan = clang++
-LD_asan = clang
-LDXX_asan = clang++
-CPPFLAGS_asan = -O0 -fsanitize-coverage=edge -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_asan = -fsanitize=address
-
-VALID_CONFIG_tsan = 1
-REQUIRE_CUSTOM_LIBRARIES_tsan = 1
-CC_tsan = clang
-CXX_tsan = clang++
-LD_tsan = clang
-LDXX_tsan = clang++
-CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_tsan = -fsanitize=thread
-DEFINES_tsan = GRPC_TSAN
-
-VALID_CONFIG_ubsan = 1
-REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
-CC_ubsan = clang
-CXX_ubsan = clang++
-LD_ubsan = clang
-LDXX_ubsan = clang++
-CPPFLAGS_ubsan = -O0 -fsanitize-coverage=edge -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
-LDFLAGS_ubsan = -fsanitize=undefined,unsigned-integer-overflow
-DEFINES_ubsan = NDEBUG
-
-VALID_CONFIG_msan = 1
-REQUIRE_CUSTOM_LIBRARIES_msan = 1
-CC_msan = clang
-CXX_msan = clang++
-LD_msan = clang
-LDXX_msan = clang++
-CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
-LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
-DEFINES_msan = NDEBUG
+VALID_CONFIG_lto = 1
+CC_lto = $(DEFAULT_CC)
+CXX_lto = $(DEFAULT_CXX)
+LD_lto = $(DEFAULT_CC)
+LDXX_lto = $(DEFAULT_CXX)
+CPPFLAGS_lto = -O2
+DEFINES_lto = NDEBUG
 
 VALID_CONFIG_mutrace = 1
 CC_mutrace = $(DEFAULT_CC)
diff --git a/build.yaml b/build.yaml
index 4b9a6f0703083136a1440eed7894b51d6d880127..0a0b84dfb61d51ff33b3343cac567a7f8a65fb45 100644
--- a/build.yaml
+++ b/build.yaml
@@ -4287,6 +4287,9 @@ configs:
     DEFINES: _DEBUG DEBUG
     LDFLAGS: -rdynamic
     valgrind: --tool=helgrind
+  lto:
+    CPPFLAGS: -O2
+    DEFINES: NDEBUG
   memcheck:
     CPPFLAGS: -O0
     DEFINES: _DEBUG DEBUG
@@ -4311,9 +4314,6 @@ configs:
   opt:
     CPPFLAGS: -O2
     DEFINES: NDEBUG
-  lto:
-    CPPFLAGS: -O2
-    DEFINES: NDEBUG
   stapprof:
     CPPFLAGS: -O2 -DGRPC_STAP_PROFILER
     DEFINES: NDEBUG
diff --git a/tools/run_tests/generated/configs.json b/tools/run_tests/generated/configs.json
index 69e0f447743f6f1d539157f12bdc19d092be6885..93dd6fb3d434c1257b29a7183455ea446f4573a9 100644
--- a/tools/run_tests/generated/configs.json
+++ b/tools/run_tests/generated/configs.json
@@ -2,6 +2,26 @@
   {
     "config": "opt"
   }, 
+  {
+    "config": "asan-trace-cmp", 
+    "environ": {
+      "ASAN_OPTIONS": "detect_leaks=1:color=always", 
+      "LSAN_OPTIONS": "suppressions=tools/lsan_suppressions.txt:report_objects=1"
+    }
+  }, 
+  {
+    "config": "dbg"
+  }, 
+  {
+    "config": "asan", 
+    "environ": {
+      "ASAN_OPTIONS": "detect_leaks=1:color=always", 
+      "LSAN_OPTIONS": "suppressions=tools/lsan_suppressions.txt:report_objects=1"
+    }
+  }, 
+  {
+    "config": "msan"
+  }, 
   {
     "config": "basicprof"
   }, 
@@ -19,14 +39,16 @@
     }
   }, 
   {
-    "config": "asan-trace-cmp", 
+    "config": "ubsan", 
     "environ": {
-      "ASAN_OPTIONS": "detect_leaks=1:color=always", 
-      "LSAN_OPTIONS": "suppressions=tools/lsan_suppressions.txt:report_objects=1"
+      "UBSAN_OPTIONS": "halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt"
     }
   }, 
   {
-    "config": "dbg"
+    "config": "tsan", 
+    "environ": {
+      "TSAN_OPTIONS": "suppressions=tools/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1"
+    }
   }, 
   {
     "config": "stapprof"
@@ -43,26 +65,7 @@
     ]
   }, 
   {
-    "config": "asan", 
-    "environ": {
-      "ASAN_OPTIONS": "detect_leaks=1:color=always", 
-      "LSAN_OPTIONS": "suppressions=tools/lsan_suppressions.txt:report_objects=1"
-    }
-  }, 
-  {
-    "config": "tsan", 
-    "environ": {
-      "TSAN_OPTIONS": "suppressions=tools/tsan_suppressions.txt:halt_on_error=1:second_deadlock_stack=1"
-    }
-  }, 
-  {
-    "config": "ubsan", 
-    "environ": {
-      "UBSAN_OPTIONS": "halt_on_error=1:print_stacktrace=1:suppressions=tools/ubsan_suppressions.txt"
-    }
-  }, 
-  {
-    "config": "msan"
+    "config": "lto"
   }, 
   {
     "config": "mutrace"
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 8c4f82974bc17895a9888415f115f1eeffac4070..43879ff9b9606ebaf1c673d05a98a29c0c68c6cb 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -40300,6 +40300,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40336,6 +40337,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40372,6 +40374,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40408,6 +40411,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40444,6 +40448,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40480,6 +40485,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40518,6 +40524,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40556,6 +40563,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40592,6 +40600,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40628,6 +40637,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40664,6 +40674,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40700,6 +40711,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40736,6 +40748,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40772,6 +40785,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40808,6 +40822,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40844,6 +40859,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40880,6 +40896,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40916,6 +40933,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40952,6 +40970,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -40988,6 +41007,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41024,6 +41044,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41062,6 +41083,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41100,6 +41122,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41136,6 +41159,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41172,6 +41196,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41208,6 +41233,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41244,6 +41270,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41280,6 +41307,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41316,6 +41344,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace", 
@@ -41352,6 +41381,7 @@
       "dbg", 
       "gcov", 
       "helgrind", 
+      "lto", 
       "memcheck", 
       "msan", 
       "mutrace",