[llvm-branch-commits] [llvm] 8f22647 - Revert "[ADT] Fix specialization of ValueIsPresent for PointerUnion (#121847)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 10 16:29:05 PST 2025
Author: Sergei Barannikov
Date: 2025-01-11T03:29:02+03:00
New Revision: 8f22647c877002892f029415b0ec0dade69f758e
URL: https://github.com/llvm/llvm-project/commit/8f22647c877002892f029415b0ec0dade69f758e
DIFF: https://github.com/llvm/llvm-project/commit/8f22647c877002892f029415b0ec0dade69f758e.diff
LOG: Revert "[ADT] Fix specialization of ValueIsPresent for PointerUnion (#121847)"
This reverts commit 7b0536794349734c8862fc140808e4e5a2ab8f8d.
Added:
Modified:
llvm/include/llvm/Support/Casting.h
llvm/lib/CodeGen/RegisterBankInfo.cpp
llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
llvm/unittests/ADT/PointerUnionTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Support/Casting.h b/llvm/include/llvm/Support/Casting.h
index 2ce70e732e2ecb..66fdcb44ea2c00 100644
--- a/llvm/include/llvm/Support/Casting.h
+++ b/llvm/include/llvm/Support/Casting.h
@@ -614,12 +614,12 @@ template <typename T> struct ValueIsPresent<std::optional<T>> {
static inline decltype(auto) unwrapValue(std::optional<T> &t) { return *t; }
};
-// If something is "nullable" then we just cast it to bool to see if it exists.
+// If something is "nullable" then we just compare it to nullptr to see if it
+// exists.
template <typename T>
-struct ValueIsPresent<
- T, std::enable_if_t<IsNullable<T> && std::is_constructible_v<bool, T>>> {
+struct ValueIsPresent<T, std::enable_if_t<IsNullable<T>>> {
using UnwrappedType = T;
- static inline bool isPresent(const T &t) { return static_cast<bool>(t); }
+ static inline bool isPresent(const T &t) { return t != T(nullptr); }
static inline decltype(auto) unwrapValue(T &t) { return t; }
};
diff --git a/llvm/lib/CodeGen/RegisterBankInfo.cpp b/llvm/lib/CodeGen/RegisterBankInfo.cpp
index 5a8cf13ad11fd5..e1720b038e2361 100644
--- a/llvm/lib/CodeGen/RegisterBankInfo.cpp
+++ b/llvm/lib/CodeGen/RegisterBankInfo.cpp
@@ -134,10 +134,10 @@ const TargetRegisterClass *RegisterBankInfo::constrainGenericRegister(
// If the register already has a class, fallback to MRI::constrainRegClass.
auto &RegClassOrBank = MRI.getRegClassOrRegBank(Reg);
- if (isa_and_present<const TargetRegisterClass *>(RegClassOrBank))
+ if (isa<const TargetRegisterClass *>(RegClassOrBank))
return MRI.constrainRegClass(Reg, &RC);
- const auto *RB = dyn_cast_if_present<const RegisterBank *>(RegClassOrBank);
+ const RegisterBank *RB = cast<const RegisterBank *>(RegClassOrBank);
// Otherwise, all we can do is ensure the bank covers the class, and set it.
if (RB && !RB->covers(RC))
return nullptr;
diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
index 8fa656c77e90ed..704435dad65d7b 100644
--- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
@@ -3708,10 +3708,10 @@ const TargetRegisterClass *
SIRegisterInfo::getConstrainedRegClassForOperand(const MachineOperand &MO,
const MachineRegisterInfo &MRI) const {
const RegClassOrRegBank &RCOrRB = MRI.getRegClassOrRegBank(MO.getReg());
- if (const auto *RB = dyn_cast_if_present<const RegisterBank *>(RCOrRB))
+ if (const RegisterBank *RB = dyn_cast<const RegisterBank *>(RCOrRB))
return getRegClassForTypeOnBank(MRI.getType(MO.getReg()), *RB);
- if (const auto *RC = dyn_cast_if_present<const TargetRegisterClass *>(RCOrRB))
+ if (const auto *RC = dyn_cast<const TargetRegisterClass *>(RCOrRB))
return getAllocatableClass(RC);
return nullptr;
diff --git a/llvm/unittests/ADT/PointerUnionTest.cpp b/llvm/unittests/ADT/PointerUnionTest.cpp
index a28d532865cbc1..acddb789601494 100644
--- a/llvm/unittests/ADT/PointerUnionTest.cpp
+++ b/llvm/unittests/ADT/PointerUnionTest.cpp
@@ -208,11 +208,6 @@ TEST_F(PointerUnionTest, NewCastInfra) {
EXPECT_FALSE(isa<float *>(d4null));
EXPECT_FALSE(isa<long long *>(d4null));
- EXPECT_FALSE(isa_and_present<int *>(i4null));
- EXPECT_FALSE(isa_and_present<float *>(f4null));
- EXPECT_FALSE(isa_and_present<long long *>(l4null));
- EXPECT_FALSE(isa_and_present<double *>(d4null));
-
// test cast<>
EXPECT_EQ(cast<float *>(a), &f);
EXPECT_EQ(cast<int *>(b), &i);
More information about the llvm-branch-commits
mailing list