[llvm-branch-commits] [llvm] 5439c31 - Revert "[LLVM][Support] add nonNull function helper (#188718)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Apr 9 13:18:39 PDT 2026
Author: Kirill Stoimenov
Date: 2026-04-09T13:18:35-07:00
New Revision: 5439c3134dc57909bd8443d75bb56b8f087753e6
URL: https://github.com/llvm/llvm-project/commit/5439c3134dc57909bd8443d75bb56b8f087753e6
DIFF: https://github.com/llvm/llvm-project/commit/5439c3134dc57909bd8443d75bb56b8f087753e6.diff
LOG: Revert "[LLVM][Support] add nonNull function helper (#188718)"
This reverts commit 9e428b7e41ee891cddc911fb70bc23b4997e1d9b.
Added:
Modified:
llvm/docs/ProgrammersManual.rst
llvm/include/llvm/Support/Error.h
llvm/unittests/Support/ErrorTest.cpp
Removed:
################################################################################
diff --git a/llvm/docs/ProgrammersManual.rst b/llvm/docs/ProgrammersManual.rst
index 04e1983fb24e4..51a813eadee73 100644
--- a/llvm/docs/ProgrammersManual.rst
+++ b/llvm/docs/ProgrammersManual.rst
@@ -453,15 +453,6 @@ violations even in builds that do not enable assertions:
reportFatalInternalError("Analysis 'foo' not preserved");
}
-Additionally, ``checkNotNull`` can be used to check/document that a pointer
-is never supposed to be null inline.
-
-.. code-block:: c++
-
- setMyPointer("key", Pointer);
- // [...]
- Type *P = checkNotNull(getMyPointer("key"));
-
Recoverable Errors
^^^^^^^^^^^^^^^^^^
diff --git a/llvm/include/llvm/Support/Error.h b/llvm/include/llvm/Support/Error.h
index 536bebf5a3ea6..c9fd16fdb7c2b 100644
--- a/llvm/include/llvm/Support/Error.h
+++ b/llvm/include/llvm/Support/Error.h
@@ -811,29 +811,6 @@ T cantFail(Expected<T> ValOrErr, const char *Msg = nullptr) {
}
}
-namespace detail {
-
-template <typename T>
-using compare_nullptr_t = decltype(std::declval<T &>() == nullptr);
-
-template <typename T>
-using is_nullptr_comparable = llvm::is_detected<compare_nullptr_t, T>;
-
-} // namespace detail
-
-/// Calls llvm_unreachable if Pointer is null, otherwise returns the
-/// pointer as is.
-template <typename T,
- typename = std::enable_if_t<detail::is_nullptr_comparable<T>::value>>
-[[nodiscard]] decltype(auto) checkNotNull(
- T &&Pointer,
- const char *Msg = "Expected a non-null pointer but got a null pointer") {
- assert(Msg);
- if (Pointer != nullptr)
- return std::forward<T>(Pointer);
- llvm_unreachable(Msg);
-}
-
/// Report a fatal error if ValOrErr is a failure value, otherwise unwraps and
/// returns the contained reference.
///
diff --git a/llvm/unittests/Support/ErrorTest.cpp b/llvm/unittests/Support/ErrorTest.cpp
index b242ac7823977..45c0a4f450b51 100644
--- a/llvm/unittests/Support/ErrorTest.cpp
+++ b/llvm/unittests/Support/ErrorTest.cpp
@@ -1219,42 +1219,4 @@ TEST(Error, ForwardToExpected) {
EXPECT_THAT_ERROR(ExpectedReturningFct(false).moveInto(MaybeV), Succeeded());
EXPECT_EQ(*MaybeV, 42);
}
-
-TEST(Error, NonNullSuccess) {
- int tmp = 0;
- int *ptr = &tmp;
- const int *cptr = ptr;
- const int *const ccptr = ptr;
- auto uptr = std::make_unique<int>(0);
-
- EXPECT_EQ(ptr, checkNotNull(&tmp));
- EXPECT_EQ(ptr, checkNotNull(ptr));
- EXPECT_EQ(ptr, checkNotNull(cptr));
- EXPECT_EQ(ptr, checkNotNull(ccptr));
- EXPECT_EQ(uptr, checkNotNull(std::move(uptr)));
-}
-
-#if !defined(NDEBUG) && GTEST_HAS_DEATH_TEST
-TEST(Error, NonNullFails) {
- int *NullPtr = nullptr;
- EXPECT_DEATH(NullPtr = checkNotNull(NullPtr),
- "Expected a non-null pointer but got a null pointer")
- << "checkNotNull(NullPtr) did not cause an abort for null pointer";
-
- EXPECT_DEATH(NullPtr = checkNotNull(nullptr),
- "Expected a non-null pointer but got a null pointer")
- << "checkNotNull(NullPtr) did not cause an abort for null pointer";
-
- auto UniquePtr = std::make_unique<int>(0);
- UniquePtr.release();
- EXPECT_DEATH(auto TmpUniquePtr = checkNotNull(std::move(UniquePtr)),
- "Expected a non-null pointer but got a null pointer")
- << "checkNotNull(NullPtr) did not cause an abort for null pointer";
-
- EXPECT_DEATH(NullPtr = checkNotNull(NullPtr, "custom message"),
- "custom message")
- << "checkNotNull(nullptr) did not cause an abort for null pointer";
-}
-#endif
-
} // namespace
More information about the llvm-branch-commits
mailing list