Now that iPTR is a fully resolved type. We end up losing the type check for
patterns that look like this:
def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>;
InsertOneTypeCheck should copy the type from the resolved pattern to the
unresolved one as long as there types are different.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28389 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index 564e194..5156d9e 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -2808,7 +2808,7 @@
bool InsertOneTypeCheck(TreePatternNode *Pat, TreePatternNode *Other,
const std::string &Prefix) {
// Did we find one?
- if (!Pat->hasTypeSet()) {
+ if (Pat->getExtTypes() != Other->getExtTypes()) {
// Move a type over from 'other' to 'pat'.
Pat->setTypes(Other->getExtTypes());
emitCheck(Prefix + ".Val->getValueType(0) == MVT::" +