Making status_cc.h an implementation detail of status.h. (#10946)

This avoids the additional library and allows all code that may be
compiling as C++ to access the iree::Status wrapper. Prior to this we
needed the split because of the cc file but by moving to header-only we
avoid the need to ever be able to support a C++ compilation unit.
diff --git a/experimental/rocm/registration/CMakeLists.txt b/experimental/rocm/registration/CMakeLists.txt
index b0d8409..aa46232 100644
--- a/experimental/rocm/registration/CMakeLists.txt
+++ b/experimental/rocm/registration/CMakeLists.txt
@@ -13,7 +13,6 @@
     "driver_module.c"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::tracing
     iree::experimental::rocm
diff --git a/runtime/bindings/python/CMakeLists.txt b/runtime/bindings/python/CMakeLists.txt
index 888149f..09806b6 100644
--- a/runtime/bindings/python/CMakeLists.txt
+++ b/runtime/bindings/python/CMakeLists.txt
@@ -48,7 +48,6 @@
     IREE_TRACING_HOOK_CPP_NEW_DELETE=0
   DEPS
     iree::base
-    iree::base::cc
     iree::base::internal::flags
     iree::base::tracing
     iree::hal
diff --git a/runtime/bindings/python/initialize_module.cc b/runtime/bindings/python/initialize_module.cc
index 09e9bec..3e76943 100644
--- a/runtime/bindings/python/initialize_module.cc
+++ b/runtime/bindings/python/initialize_module.cc
@@ -11,7 +11,6 @@
 #include "./status_utils.h"
 #include "./vm.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/drivers/init.h"
 
 namespace iree {
diff --git a/runtime/bindings/python/vm.cc b/runtime/bindings/python/vm.cc
index 027a8c3..b550ce4 100644
--- a/runtime/bindings/python/vm.cc
+++ b/runtime/bindings/python/vm.cc
@@ -8,7 +8,6 @@
 
 #include "./status_utils.h"
 #include "iree/base/api.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 // TODO: We shouldn't need the HAL API but it is used for direct printing
 // summaries of HAL objects in lists. We should have a better way of doing this
diff --git a/runtime/src/iree/base/BUILD b/runtime/src/iree/base/BUILD
index f270bfc..4ef73ae 100644
--- a/runtime/src/iree/base/BUILD
+++ b/runtime/src/iree/base/BUILD
@@ -32,6 +32,7 @@
         "loop_inline.h",
         "status.c",
         "status.h",
+        "status_cc.h",
         "string_builder.c",
         "string_builder.h",
         "string_view.c",
@@ -49,21 +50,6 @@
     ],
 )
 
-# TODO(benvanik): make these srcs and only expose an api_cc.h.
-iree_runtime_cc_library(
-    name = "cc",
-    srcs = [
-        "status_cc.cc",
-    ],
-    hdrs = [
-        "status_cc.h",
-    ],
-    deps = [
-        ":base",
-        ":core_headers",
-    ],
-)
-
 iree_runtime_cc_test(
     name = "bitfield_test",
     srcs = ["bitfield_test.cc"],
@@ -81,7 +67,6 @@
     ],
     deps = [
         ":base",
-        ":cc",
         ":loop_test_hdrs",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
@@ -107,7 +92,6 @@
     srcs = ["status_test.cc"],
     deps = [
         ":base",
-        ":cc",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
     ],
@@ -175,7 +159,6 @@
     ],
     deps = [
         ":base",
-        ":cc",
         ":loop_sync",
         ":loop_test_hdrs",
         "//runtime/src/iree/testing:gtest",
diff --git a/runtime/src/iree/base/CMakeLists.txt b/runtime/src/iree/base/CMakeLists.txt
index 50d000d..2bdaf40 100644
--- a/runtime/src/iree/base/CMakeLists.txt
+++ b/runtime/src/iree/base/CMakeLists.txt
@@ -23,6 +23,7 @@
     "loop_inline.h"
     "status.c"
     "status.h"
+    "status_cc.h"
     "string_builder.c"
     "string_builder.h"
     "string_view.c"
@@ -48,19 +49,6 @@
   PUBLIC
 )
 
-iree_cc_library(
-  NAME
-    cc
-  HDRS
-    "status_cc.h"
-  SRCS
-    "status_cc.cc"
-  DEPS
-    ::base
-    ::core_headers
-  PUBLIC
-)
-
 iree_cc_test(
   NAME
     bitfield_test
@@ -79,7 +67,6 @@
     "loop_inline_test.cc"
   DEPS
     ::base
-    ::cc
     ::loop_test_hdrs
     ::tracing
     iree::testing::gtest
@@ -93,7 +80,6 @@
     "loop_test.h"
   DEPS
     ::base
-    ::cc
     ::tracing
     iree::base::internal::wait_handle
     iree::testing::gtest
@@ -108,7 +94,6 @@
     "status_test.cc"
   DEPS
     ::base
-    ::cc
     iree::testing::gtest
     iree::testing::gtest_main
 )
@@ -165,7 +150,6 @@
     "loop_sync_test.cc"
   DEPS
     ::base
-    ::cc
     ::loop_sync
     ::loop_test_hdrs
     ::tracing
diff --git a/runtime/src/iree/base/internal/BUILD b/runtime/src/iree/base/internal/BUILD
index 1c7615b..b8dfd7e 100644
--- a/runtime/src/iree/base/internal/BUILD
+++ b/runtime/src/iree/base/internal/BUILD
@@ -150,7 +150,7 @@
     tags = ["requires-filesystem"],
     deps = [
         ":file_io",
-        "//runtime/src/iree/base:cc",
+        "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
@@ -413,7 +413,6 @@
         ":synchronization",
         ":threading",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:target_platform",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
diff --git a/runtime/src/iree/base/internal/CMakeLists.txt b/runtime/src/iree/base/internal/CMakeLists.txt
index 83f2c28..d172026 100644
--- a/runtime/src/iree/base/internal/CMakeLists.txt
+++ b/runtime/src/iree/base/internal/CMakeLists.txt
@@ -147,7 +147,7 @@
     "file_io_test.cc"
   DEPS
     ::file_io
-    iree::base::cc
+    iree::base
     iree::base::core_headers
     iree::testing::gtest
     iree::testing::gtest_main
@@ -430,7 +430,6 @@
     ::synchronization
     ::threading
     iree::base
-    iree::base::cc
     iree::base::target_platform
     iree::testing::gtest
     iree::testing::gtest_main
diff --git a/runtime/src/iree/base/internal/file_io_test.cc b/runtime/src/iree/base/internal/file_io_test.cc
index c682ae0..0c681c46 100644
--- a/runtime/src/iree/base/internal/file_io_test.cc
+++ b/runtime/src/iree/base/internal/file_io_test.cc
@@ -19,7 +19,6 @@
 #include <type_traits>
 #include <utility>
 
-#include "iree/base/status_cc.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 
diff --git a/runtime/src/iree/base/internal/threading_test.cc b/runtime/src/iree/base/internal/threading_test.cc
index cb08781..3eed9df 100644
--- a/runtime/src/iree/base/internal/threading_test.cc
+++ b/runtime/src/iree/base/internal/threading_test.cc
@@ -13,7 +13,6 @@
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/threading_impl.h"  // to test the override list
-#include "iree/base/status_cc.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 
diff --git a/runtime/src/iree/base/status.h b/runtime/src/iree/base/status.h
index d53a461..9a03ef3 100644
--- a/runtime/src/iree/base/status.h
+++ b/runtime/src/iree/base/status.h
@@ -507,4 +507,10 @@
 }  // extern "C"
 #endif  // __cplusplus
 
+// Optional C++ iree::Status wrapper.
+// This makes it easier to safely use iree_status_t in C++ code and not leak.
+#ifdef __cplusplus
+#include "iree/base/status_cc.h"
+#endif  // __cplusplus
+
 #endif  // IREE_BASE_STATUS_H_
diff --git a/runtime/src/iree/base/status_cc.cc b/runtime/src/iree/base/status_cc.cc
deleted file mode 100644
index 6b81e8f..0000000
--- a/runtime/src/iree/base/status_cc.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2019 The IREE Authors
-//
-// Licensed under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-#include "iree/base/status_cc.h"
-
-#include <cstddef>
-#include <cstdlib>
-
-#include "iree/base/attributes.h"
-
-namespace iree {
-
-// static
-IREE_MUST_USE_RESULT std::string Status::ToString(iree_status_t status) {
-  if (iree_status_is_ok(status)) {
-    return "OK";
-  }
-  iree_host_size_t buffer_length = 0;
-  if (IREE_UNLIKELY(!iree_status_format(status, /*buffer_capacity=*/0,
-                                        /*buffer=*/NULL, &buffer_length))) {
-    return "<!>";
-  }
-  std::string result(buffer_length, '\0');
-  if (IREE_UNLIKELY(!iree_status_format(status, result.size() + 1,
-                                        const_cast<char*>(result.data()),
-                                        &buffer_length))) {
-    return "<!>";
-  }
-  return result;
-}
-
-namespace status_impl {
-
-void Helper::HandleInvalidStatusCtorArg(Status* status) {
-  fprintf(stderr,
-          "An OK status is not a valid constructor argument to StatusOr<T>\n");
-  iree_abort();
-}
-
-void Helper::Crash(const Status& status) {
-  std::string message = status.ToString();
-  fprintf(stderr, "Attempting to fetch value instead of handling error:\n%s\n",
-          message.c_str());
-  iree_abort();
-}
-
-}  // namespace status_impl
-
-}  // namespace iree
diff --git a/runtime/src/iree/base/status_cc.h b/runtime/src/iree/base/status_cc.h
index cdfb8ad..b0e21ae 100644
--- a/runtime/src/iree/base/status_cc.h
+++ b/runtime/src/iree/base/status_cc.h
@@ -11,7 +11,9 @@
 #error iree::Status is only usable in C++ code.
 #endif  // !__cplusplus
 
+#include <cstddef>
 #include <cstdint>
+#include <cstdlib>
 #include <cstring>
 #include <memory>
 #include <string>
@@ -108,7 +110,24 @@
 class Status final {
  public:
   // Return a combination of the error code name and message.
-  static IREE_MUST_USE_RESULT std::string ToString(iree_status_t status);
+  static inline IREE_MUST_USE_RESULT std::string ToString(
+      iree_status_t status) {
+    if (iree_status_is_ok(status)) {
+      return "OK";
+    }
+    iree_host_size_t buffer_length = 0;
+    if (IREE_UNLIKELY(!iree_status_format(status, /*buffer_capacity=*/0,
+                                          /*buffer=*/NULL, &buffer_length))) {
+      return "<!>";
+    }
+    std::string result(buffer_length, '\0');
+    if (IREE_UNLIKELY(!iree_status_format(status, result.size() + 1,
+                                          const_cast<char*>(result.data()),
+                                          &buffer_length))) {
+      return "<!>";
+    }
+    return result;
+  }
 
   // Creates an OK status with no message.
   Status() = default;
@@ -195,6 +214,8 @@
         value_, iree_status_from_code(iree_status_code(value_)));
   }
 
+  iree_status_t get() const { return value_; }
+
   IREE_MUST_USE_RESULT iree_status_t release() {
     return status_impl::exchange(value_, iree_ok_status());
   }
@@ -318,12 +339,6 @@
     std::is_same<T, std::remove_cv_t<std::remove_reference_t<U>>>,
     status_impl::negation<IsStatusOrDirectInitializationAmbiguous<T, U>>>;
 
-class Helper {
- public:
-  IREE_ATTRIBUTE_NORETURN static void HandleInvalidStatusCtorArg(Status*);
-  IREE_ATTRIBUTE_NORETURN static void Crash(const Status& status);
-};
-
 // Construct an instance of T in `p` through placement new, passing Args... to
 // the constructor.
 // This abstraction is here mostly for the gcc performance fix.
@@ -479,11 +494,17 @@
   }
 
   void EnsureOk() const {
-    if (IREE_UNLIKELY(!ok())) Helper::Crash(status_);
+    if (IREE_UNLIKELY(!ok())) {
+      iree_status_abort(status_.get());
+    }
   }
 
   void EnsureNotOk() {
-    if (IREE_UNLIKELY(ok())) Helper::HandleInvalidStatusCtorArg(&status_);
+    if (IREE_UNLIKELY(ok())) {
+      iree_status_abort(iree_make_status(
+          IREE_STATUS_FAILED_PRECONDITION,
+          "an OK status is not a valid constructor argument to StatusOr<T>"));
+    }
   }
 
   // Construct the value (data_) through placement new with the passed arg.
diff --git a/runtime/src/iree/base/status_test.cc b/runtime/src/iree/base/status_test.cc
index a9cf5d9..e9db696 100644
--- a/runtime/src/iree/base/status_test.cc
+++ b/runtime/src/iree/base/status_test.cc
@@ -10,7 +10,6 @@
 #include <utility>
 
 #include "iree/base/api.h"
-#include "iree/base/status_cc.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 
diff --git a/runtime/src/iree/hal/BUILD b/runtime/src/iree/hal/BUILD
index b2a4046..17ab96f 100644
--- a/runtime/src/iree/hal/BUILD
+++ b/runtime/src/iree/hal/BUILD
@@ -80,7 +80,6 @@
     deps = [
         ":hal",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base/internal:span",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
diff --git a/runtime/src/iree/hal/CMakeLists.txt b/runtime/src/iree/hal/CMakeLists.txt
index 42e2365..c25ea4b 100644
--- a/runtime/src/iree/hal/CMakeLists.txt
+++ b/runtime/src/iree/hal/CMakeLists.txt
@@ -71,7 +71,6 @@
   DEPS
     ::hal
     iree::base
-    iree::base::cc
     iree::base::internal::span
     iree::testing::gtest
     iree::testing::gtest_main
diff --git a/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt b/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
index 48d2b5c..aad143b 100644
--- a/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
@@ -15,7 +15,6 @@
     "driver_module.c"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal::flags
     iree::base::tracing
diff --git a/runtime/src/iree/hal/drivers/vulkan/BUILD b/runtime/src/iree/hal/drivers/vulkan/BUILD
index b7463f7..3077cbb 100644
--- a/runtime/src/iree/hal/drivers/vulkan/BUILD
+++ b/runtime/src/iree/hal/drivers/vulkan/BUILD
@@ -68,7 +68,6 @@
     deps = [
         ":dynamic_symbols",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
@@ -103,7 +102,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
diff --git a/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt b/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
index c90219e..4762fd8 100644
--- a/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
@@ -62,7 +62,6 @@
     ::dynamic_symbols
     Vulkan::Headers
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
@@ -95,7 +94,6 @@
   DEPS
     Vulkan::Headers
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal::dynamic_library
     iree::base::tracing
diff --git a/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.h b/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.h
index a292bfe..c07415b 100644
--- a/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.h
+++ b/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.h
@@ -13,7 +13,6 @@
 #include <vector>
 
 #include "iree/base/api.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/vulkan/descriptor_pool_cache.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc b/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
index 591f75d..7a47af2 100644
--- a/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
@@ -12,7 +12,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/inline_array.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/descriptor_set_arena.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.h b/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.h
index af6d672..9983d17 100644
--- a/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.h
+++ b/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.h
@@ -17,7 +17,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"  // IWYU pragma: export
 #include "iree/hal/drivers/vulkan/util/ref_ptr.h"
 
diff --git a/runtime/src/iree/hal/drivers/vulkan/registration/BUILD b/runtime/src/iree/hal/drivers/vulkan/registration/BUILD
index 3fd8f50..a47a7db 100644
--- a/runtime/src/iree/hal/drivers/vulkan/registration/BUILD
+++ b/runtime/src/iree/hal/drivers/vulkan/registration/BUILD
@@ -21,7 +21,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
diff --git a/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt b/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
index cde8f83..15bcb7b 100644
--- a/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
@@ -19,7 +19,6 @@
     "driver_module.cc"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal::flags
     iree::base::tracing
diff --git a/runtime/src/iree/hal/string_util_test.cc b/runtime/src/iree/hal/string_util_test.cc
index 9190e06..d723e29 100644
--- a/runtime/src/iree/hal/string_util_test.cc
+++ b/runtime/src/iree/hal/string_util_test.cc
@@ -13,7 +13,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/span.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
diff --git a/runtime/src/iree/modules/check/BUILD b/runtime/src/iree/modules/check/BUILD
index 8fa3e95..b6ea845 100644
--- a/runtime/src/iree/modules/check/BUILD
+++ b/runtime/src/iree/modules/check/BUILD
@@ -19,7 +19,6 @@
     hdrs = ["module.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal",
@@ -35,7 +34,6 @@
     deps = [
         ":check",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:span",
         "//runtime/src/iree/hal",
diff --git a/runtime/src/iree/modules/check/CMakeLists.txt b/runtime/src/iree/modules/check/CMakeLists.txt
index dd1e804..80b7862 100644
--- a/runtime/src/iree/modules/check/CMakeLists.txt
+++ b/runtime/src/iree/modules/check/CMakeLists.txt
@@ -19,7 +19,6 @@
     "module.cc"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::internal
     iree::hal
     iree::modules::hal
@@ -38,7 +37,6 @@
   DEPS
     ::check
     iree::base
-    iree::base::cc
     iree::base::internal
     iree::base::internal::span
     iree::hal
diff --git a/runtime/src/iree/modules/check/check_test.cc b/runtime/src/iree/modules/check/check_test.cc
index 6f5e72e..ee72a9d 100644
--- a/runtime/src/iree/modules/check/check_test.cc
+++ b/runtime/src/iree/modules/check/check_test.cc
@@ -13,7 +13,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/span.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/api.h"
 #include "iree/modules/check/module.h"
 #include "iree/modules/hal/module.h"
diff --git a/runtime/src/iree/modules/check/module.cc b/runtime/src/iree/modules/check/module.cc
index 14e2487..5c44c1c 100644
--- a/runtime/src/iree/modules/check/module.cc
+++ b/runtime/src/iree/modules/check/module.cc
@@ -19,7 +19,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/testing/gtest.h"
diff --git a/runtime/src/iree/testing/BUILD b/runtime/src/iree/testing/BUILD
index fcbaeb1..f33decb 100644
--- a/runtime/src/iree/testing/BUILD
+++ b/runtime/src/iree/testing/BUILD
@@ -47,7 +47,7 @@
         "status_matchers.h",
     ],
     deps = [
-        "//runtime/src/iree/base:cc",
+        "//runtime/src/iree/base",
         "@com_google_googletest//:gtest",
     ],
 )
diff --git a/runtime/src/iree/testing/CMakeLists.txt b/runtime/src/iree/testing/CMakeLists.txt
index 2f7d989..d86c4a8 100644
--- a/runtime/src/iree/testing/CMakeLists.txt
+++ b/runtime/src/iree/testing/CMakeLists.txt
@@ -58,7 +58,7 @@
   DEPS
     gmock
     gtest
-    iree::base::cc
+    iree::base
   TESTONLY
   PUBLIC
 )
diff --git a/runtime/src/iree/testing/status_matchers.h b/runtime/src/iree/testing/status_matchers.h
index 76509fd..6b49ed8 100644
--- a/runtime/src/iree/testing/status_matchers.h
+++ b/runtime/src/iree/testing/status_matchers.h
@@ -10,7 +10,7 @@
 #include <memory>
 #include <string>
 
-#include "iree/base/status_cc.h"  // IWYU pragma: export
+#include "iree/base/api.h"  // IWYU pragma: export
 #include "iree/testing/gtest.h"
 
 namespace iree {
diff --git a/runtime/src/iree/tooling/BUILD b/runtime/src/iree/tooling/BUILD
index feff3dc..eb009bb 100644
--- a/runtime/src/iree/tooling/BUILD
+++ b/runtime/src/iree/tooling/BUILD
@@ -46,7 +46,6 @@
         ":buffer_view_matchers",
         ":vm_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/base/internal:span",
@@ -157,7 +156,6 @@
     deps = [
         ":vm_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:span",
         "//runtime/src/iree/vm:cc",
diff --git a/runtime/src/iree/tooling/CMakeLists.txt b/runtime/src/iree/tooling/CMakeLists.txt
index a91c336..b21bd7a 100644
--- a/runtime/src/iree/tooling/CMakeLists.txt
+++ b/runtime/src/iree/tooling/CMakeLists.txt
@@ -51,7 +51,6 @@
     ::buffer_view_matchers
     ::vm_util
     iree::base
-    iree::base::cc
     iree::base::internal::flags
     iree::base::internal::span
     iree::base::tracing
@@ -179,7 +178,6 @@
   DEPS
     ::vm_util
     iree::base
-    iree::base::cc
     iree::base::internal::span
     iree::base::tracing
     iree::vm::cc
diff --git a/runtime/src/iree/tooling/comparison.cc b/runtime/src/iree/tooling/comparison.cc
index 505936f..31f987a 100644
--- a/runtime/src/iree/tooling/comparison.cc
+++ b/runtime/src/iree/tooling/comparison.cc
@@ -11,7 +11,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
diff --git a/runtime/src/iree/tooling/vm_util_cc.h b/runtime/src/iree/tooling/vm_util_cc.h
index 9af168c..fce5099 100644
--- a/runtime/src/iree/tooling/vm_util_cc.h
+++ b/runtime/src/iree/tooling/vm_util_cc.h
@@ -10,8 +10,8 @@
 #include <string>
 #include <vector>
 
+#include "iree/base/api.h"
 #include "iree/base/internal/span.h"
-#include "iree/base/status_cc.h"
 #include "iree/hal/api.h"
 #include "iree/tooling/vm_util.h"
 #include "iree/vm/api.h"
diff --git a/runtime/src/iree/vm/BUILD b/runtime/src/iree/vm/BUILD
index 4483b76..a986ac6 100644
--- a/runtime/src/iree/vm/BUILD
+++ b/runtime/src/iree/vm/BUILD
@@ -41,7 +41,6 @@
     deps = [
         ":vm",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base/internal:span",
     ],
@@ -119,7 +118,6 @@
         ":impl",
         ":native_module_test_hdrs",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
     ],
@@ -237,7 +235,7 @@
     deps = [
         ":bytecode_module",
         ":vm",
-        "//runtime/src/iree/base:cc",
+        "//runtime/src/iree/base",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
         "//runtime/src/iree/vm/test:all_bytecode_modules_c",
diff --git a/runtime/src/iree/vm/CMakeLists.txt b/runtime/src/iree/vm/CMakeLists.txt
index 9351f48..03c09b7 100644
--- a/runtime/src/iree/vm/CMakeLists.txt
+++ b/runtime/src/iree/vm/CMakeLists.txt
@@ -31,7 +31,6 @@
   DEPS
     ::vm
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal::span
   PUBLIC
@@ -108,7 +107,6 @@
     ::impl
     ::native_module_test_hdrs
     iree::base
-    iree::base::cc
     iree::testing::gtest
     iree::testing::gtest_main
 )
@@ -200,7 +198,7 @@
   DEPS
     ::bytecode_module
     ::vm
-    iree::base::cc
+    iree::base
     iree::testing::gtest
     iree::testing::gtest_main
     iree::vm::test::all_bytecode_modules_c
diff --git a/runtime/src/iree/vm/bytecode_dispatch_async_test.cc b/runtime/src/iree/vm/bytecode_dispatch_async_test.cc
index e398c32..444f003 100644
--- a/runtime/src/iree/vm/bytecode_dispatch_async_test.cc
+++ b/runtime/src/iree/vm/bytecode_dispatch_async_test.cc
@@ -10,7 +10,7 @@
 // avoid defining the IR inline here so that we can run this test on platforms
 // that we can't run the full MLIR compiler stack on.
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/api.h"
diff --git a/runtime/src/iree/vm/bytecode_dispatch_test.cc b/runtime/src/iree/vm/bytecode_dispatch_test.cc
index 9de8ff0..75d9984 100644
--- a/runtime/src/iree/vm/bytecode_dispatch_test.cc
+++ b/runtime/src/iree/vm/bytecode_dispatch_test.cc
@@ -10,7 +10,7 @@
 // avoid defining the IR inline here so that we can run this test on platforms
 // that we can't run the full MLIR compiler stack on.
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/vm/api.h"
 #include "iree/vm/bytecode_module.h"
diff --git a/runtime/src/iree/vm/native_module_cc.h b/runtime/src/iree/vm/native_module_cc.h
index dce141d..13102ff 100644
--- a/runtime/src/iree/vm/native_module_cc.h
+++ b/runtime/src/iree/vm/native_module_cc.h
@@ -13,7 +13,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/span.h"
-#include "iree/base/status_cc.h"
 #include "iree/vm/instance.h"
 #include "iree/vm/module.h"
 #include "iree/vm/native_module_packing.h"  // IWYU pragma: export
diff --git a/runtime/src/iree/vm/native_module_packing.h b/runtime/src/iree/vm/native_module_packing.h
index fc86c2d..a5892fa 100644
--- a/runtime/src/iree/vm/native_module_packing.h
+++ b/runtime/src/iree/vm/native_module_packing.h
@@ -14,7 +14,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/span.h"
-#include "iree/base/status_cc.h"
 #include "iree/vm/module.h"
 #include "iree/vm/ref.h"
 #include "iree/vm/ref_cc.h"
diff --git a/runtime/src/iree/vm/native_module_test.cc b/runtime/src/iree/vm/native_module_test.cc
index 5a4c489..b551acb 100644
--- a/runtime/src/iree/vm/native_module_test.cc
+++ b/runtime/src/iree/vm/native_module_test.cc
@@ -8,7 +8,7 @@
 
 #include <vector>
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/context.h"
diff --git a/runtime/src/iree/vm/test/emitc/BUILD b/runtime/src/iree/vm/test/emitc/BUILD
index a23fa3a..1516cbf 100644
--- a/runtime/src/iree/vm/test/emitc/BUILD
+++ b/runtime/src/iree/vm/test/emitc/BUILD
@@ -39,7 +39,7 @@
         ":ref_ops",
         ":shift_ops",
         ":shift_ops_i64",
-        "//runtime/src/iree/base:cc",
+        "//runtime/src/iree/base",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
         "//runtime/src/iree/vm",
diff --git a/runtime/src/iree/vm/test/emitc/CMakeLists.txt b/runtime/src/iree/vm/test/emitc/CMakeLists.txt
index c0f3031..c80da9e 100644
--- a/runtime/src/iree/vm/test/emitc/CMakeLists.txt
+++ b/runtime/src/iree/vm/test/emitc/CMakeLists.txt
@@ -14,7 +14,7 @@
   SRCS
     "module_test.cc"
   DEPS
-    iree::base::cc
+    iree::base
     iree::testing::gtest
     iree::testing::gtest_main
     iree::vm
diff --git a/runtime/src/iree/vm/test/emitc/module_test.cc b/runtime/src/iree/vm/test/emitc/module_test.cc
index d42fa57..9d08bcc 100644
--- a/runtime/src/iree/vm/test/emitc/module_test.cc
+++ b/runtime/src/iree/vm/test/emitc/module_test.cc
@@ -11,7 +11,7 @@
 #include <cmath>
 using namespace std;
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/vm/api.h"
 #define EMITC_IMPLEMENTATION
diff --git a/samples/custom_module/CMakeLists.txt b/samples/custom_module/CMakeLists.txt
index 3aae053..dbfb002 100644
--- a/samples/custom_module/CMakeLists.txt
+++ b/samples/custom_module/CMakeLists.txt
@@ -22,7 +22,6 @@
 
 target_link_libraries(${_NAME}
   iree_base_base
-  iree_base_cc
   iree_base_internal_file_io
   iree_vm_vm
   iree_vm_bytecode_module
diff --git a/samples/custom_module/module.cc b/samples/custom_module/module.cc
index 8b5dd12..4a0789a 100644
--- a/samples/custom_module/module.cc
+++ b/samples/custom_module/module.cc
@@ -9,7 +9,6 @@
 #include <cstdio>
 
 #include "iree/base/api.h"
-#include "iree/base/status_cc.h"
 #include "iree/vm/native_module_cc.h"
 #include "iree/vm/ref_cc.h"
 
diff --git a/samples/emitc_modules/BUILD b/samples/emitc_modules/BUILD
index 435ddd3..889f407 100644
--- a/samples/emitc_modules/BUILD
+++ b/samples/emitc_modules/BUILD
@@ -28,7 +28,6 @@
     deps = [
         ":add_module",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
         "//runtime/src/iree/vm",
@@ -61,7 +60,6 @@
         ":import_module_a",
         ":import_module_b",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
         "//runtime/src/iree/vm",
diff --git a/samples/emitc_modules/CMakeLists.txt b/samples/emitc_modules/CMakeLists.txt
index 85e7acc..bcdc48d 100644
--- a/samples/emitc_modules/CMakeLists.txt
+++ b/samples/emitc_modules/CMakeLists.txt
@@ -27,7 +27,6 @@
   DEPS
     ::add_module
     iree::base
-    iree::base::cc
     iree::testing::gtest
     iree::testing::gtest_main
     iree::vm
@@ -43,7 +42,6 @@
     ::import_module_a
     ::import_module_b
     iree::base
-    iree::base::cc
     iree::testing::gtest
     iree::testing::gtest_main
     iree::vm
diff --git a/samples/emitc_modules/add_module_test.cc b/samples/emitc_modules/add_module_test.cc
index e769bfa..d69ab44 100644
--- a/samples/emitc_modules/add_module_test.cc
+++ b/samples/emitc_modules/add_module_test.cc
@@ -6,7 +6,7 @@
 
 #include "samples/emitc_modules/add_module.h"
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/api.h"
diff --git a/samples/emitc_modules/import_module_test.cc b/samples/emitc_modules/import_module_test.cc
index 4c93c50..1150f4f 100644
--- a/samples/emitc_modules/import_module_test.cc
+++ b/samples/emitc_modules/import_module_test.cc
@@ -4,7 +4,7 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 #include "iree/vm/api.h"
diff --git a/tools/BUILD b/tools/BUILD
index b448d7a..a756e98 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -27,7 +27,6 @@
     srcs = ["iree-benchmark-module-main.cc"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
@@ -66,7 +65,6 @@
     srcs = ["iree-check-module-main.cc"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
@@ -131,7 +129,6 @@
         "//compiler/src/iree/compiler/Tools:init_passes_and_dialects",
         "//compiler/src/iree/compiler/Tools:init_targets",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
@@ -157,7 +154,6 @@
     srcs = ["iree-run-module-main.cc"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:cc",
         "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index aa7b018..4ca471b 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -47,7 +47,6 @@
   DEPS
     benchmark
     iree::base
-    iree::base::cc
     iree::base::internal::flags
     iree::base::tracing
     iree::hal
@@ -87,7 +86,6 @@
     "iree-check-module-main.cc"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::core_headers
     iree::base::internal::file_io
     iree::base::internal::flags
@@ -124,7 +122,6 @@
     "iree-run-module-main.cc"
   DEPS
     iree::base
-    iree::base::cc
     iree::base::internal::flags
     iree::base::tracing
     iree::hal
@@ -250,7 +247,6 @@
       MLIRSupport
       MLIRTargetLLVMIRExport
       iree::base
-      iree::base::cc
       iree::base::internal::flags
       iree::base::tracing
       iree::compiler::Dialect::HAL::Target
diff --git a/tools/android/run_module_app/CMakeLists.txt b/tools/android/run_module_app/CMakeLists.txt
index 022ff79..dfb229d 100644
--- a/tools/android/run_module_app/CMakeLists.txt
+++ b/tools/android/run_module_app/CMakeLists.txt
@@ -31,7 +31,7 @@
     ${NATIVE_APP_GLUE_DIR}
   DEPS
     ::android_native_app_glue
-    iree::base::cc
+    iree::base
     iree::modules::hal
     iree::tooling::device_util
     iree::tooling::vm_util_cc
diff --git a/tools/android/run_module_app/src/main.cc b/tools/android/run_module_app/src/main.cc
index 4fb0e3b..8a3bc09 100644
--- a/tools/android/run_module_app/src/main.cc
+++ b/tools/android/run_module_app/src/main.cc
@@ -13,7 +13,7 @@
 #include <string>
 #include <thread>
 
-#include "iree/base/status_cc.h"
+#include "iree/base/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/tooling/device_util.h"
 #include "iree/tooling/vm_util_cc.h"
diff --git a/tools/iree-benchmark-module-main.cc b/tools/iree-benchmark-module-main.cc
index ea3738e..6a32673 100644
--- a/tools/iree-benchmark-module-main.cc
+++ b/tools/iree-benchmark-module-main.cc
@@ -63,7 +63,6 @@
 #include "benchmark/benchmark.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/types.h"
diff --git a/tools/iree-check-module-main.cc b/tools/iree-check-module-main.cc
index a922f17..38f53f6 100644
--- a/tools/iree-check-module-main.cc
+++ b/tools/iree-check-module-main.cc
@@ -14,7 +14,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/file_io.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/target_platform.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/api.h"
diff --git a/tools/iree-run-mlir-main.cc b/tools/iree-run-mlir-main.cc
index 23feab3..fd39e67 100644
--- a/tools/iree-run-mlir-main.cc
+++ b/tools/iree-run-mlir-main.cc
@@ -40,7 +40,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 #include "iree/compiler/Dialect/HAL/Target/TargetBackend.h"
 #include "iree/compiler/Dialect/VM/Target/Bytecode/BytecodeModuleTarget.h"
diff --git a/tools/iree-run-module-main.cc b/tools/iree-run-module-main.cc
index a58a051..78293cb 100644
--- a/tools/iree-run-module-main.cc
+++ b/tools/iree-run-module-main.cc
@@ -14,7 +14,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status_cc.h"
 #include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/types.h"