[llvm] d20c29d - [TableGen] Make getRegisterValueType stricter about HwModes.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 23 23:28:58 PDT 2023
Author: Craig Topper
Date: 2023-04-23T23:28:23-07:00
New Revision: d20c29d9964188dabfaef9c510e59b895f4ad869
URL: https://github.com/llvm/llvm-project/commit/d20c29d9964188dabfaef9c510e59b895f4ad869
DIFF: https://github.com/llvm/llvm-project/commit/d20c29d9964188dabfaef9c510e59b895f4ad869.diff
LOG: [TableGen] Make getRegisterValueType stricter about HwModes.
I don't think this code would work correctly if the register class
used used HwModes. Add asserts to make sure it's not used with HwModes.
Also fix a long outdated comment on the function.
Added:
Modified:
llvm/utils/TableGen/DAGISelMatcherGen.cpp
Removed:
################################################################################
diff --git a/llvm/utils/TableGen/DAGISelMatcherGen.cpp b/llvm/utils/TableGen/DAGISelMatcherGen.cpp
index c90375ad5fe6..33ec3e7099f9 100644
--- a/llvm/utils/TableGen/DAGISelMatcherGen.cpp
+++ b/llvm/utils/TableGen/DAGISelMatcherGen.cpp
@@ -22,8 +22,8 @@ using namespace llvm;
/// getRegisterValueType - Look up and return the ValueType of the specified
-/// register. If the register is a member of multiple register classes which
-/// have
diff erent associated types, return MVT::Other.
+/// register. If the register is a member of multiple register classes, they
+/// must all have the same type.
static MVT::SimpleValueType getRegisterValueType(Record *R,
const CodeGenTarget &T) {
bool FoundRC = false;
@@ -37,15 +37,15 @@ static MVT::SimpleValueType getRegisterValueType(Record *R,
if (!FoundRC) {
FoundRC = true;
const ValueTypeByHwMode &VVT = RC.getValueTypeNum(0);
- if (VVT.isSimple())
- VT = VVT.getSimple().SimpleTy;
+ assert(VVT.isSimple());
+ VT = VVT.getSimple().SimpleTy;
continue;
}
#ifndef NDEBUG
// If this occurs in multiple register classes, they all have to agree.
- const ValueTypeByHwMode &T = RC.getValueTypeNum(0);
- assert((!T.isSimple() || T.getSimple().SimpleTy == VT) &&
+ const ValueTypeByHwMode &VVT = RC.getValueTypeNum(0);
+ assert(VVT.isSimple() && VVT.getSimple().SimpleTy == VT &&
"ValueType mismatch between register classes for this register");
#endif
}
More information about the llvm-commits
mailing list