mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-17 21:35:07 +00:00
It should be ok for a xform output type to be different from input type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26899 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
dd4d2d0e40
commit
f26ba69725
@ -694,14 +694,26 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
|
||||
} else {
|
||||
assert(getOperator()->isSubClassOf("SDNodeXForm") && "Unknown node type!");
|
||||
|
||||
// Node transforms always take one operand, and take and return the same
|
||||
// type.
|
||||
// Node transforms always take one operand.
|
||||
if (getNumChildren() != 1)
|
||||
TP.error("Node transform '" + getOperator()->getName() +
|
||||
"' requires one operand!");
|
||||
bool MadeChange = UpdateNodeType(getChild(0)->getExtTypes(), TP);
|
||||
MadeChange |= getChild(0)->UpdateNodeType(getExtTypes(), TP);
|
||||
return MadeChange;
|
||||
unsigned char ExtType0 = getExtTypeNum(0);
|
||||
unsigned char ChildExtType0 = getChild(0)->getExtTypeNum(0);
|
||||
if (ExtType0 == MVT::isInt ||
|
||||
ExtType0 == MVT::isFP ||
|
||||
ExtType0 == MVT::isUnknown ||
|
||||
ChildExtType0 == MVT::isInt ||
|
||||
ChildExtType0 == MVT::isFP ||
|
||||
ChildExtType0 == MVT::isUnknown) {
|
||||
// If either the output or input of the xform does not have exact
|
||||
// type info. We assume they must be the same. Otherwise, it is perfectly
|
||||
// legal to transform from one type to a completely different type.
|
||||
bool MadeChange = UpdateNodeType(getChild(0)->getExtTypes(), TP);
|
||||
MadeChange |= getChild(0)->UpdateNodeType(getExtTypes(), TP);
|
||||
return MadeChange;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user