summaryrefslogtreecommitdiff
path: root/utils/TableGen/DAGISelEmitter.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-11-02 21:07:40 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-11-02 21:07:40 +0000
commit63fd6ad77b6d5e62d90c416231e994245225d731 (patch)
tree0e41a1dda2630daa35e5e7eebb6d2296edd2e7cb /utils/TableGen/DAGISelEmitter.cpp
parent9bd6d65e299ee3937c29904821b2b6d8bb87ae4a (diff)
downloadllvm-63fd6ad77b6d5e62d90c416231e994245225d731.tar.gz
llvm-63fd6ad77b6d5e62d90c416231e994245225d731.tar.bz2
llvm-63fd6ad77b6d5e62d90c416231e994245225d731.tar.xz
Revert last patch which causes tblgen to segfault (why, I'm not sure).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31383 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/DAGISelEmitter.cpp')
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index 39480c9664..4f5a731736 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -2259,11 +2259,13 @@ public:
unsigned OpNo = 0;
bool NodeHasChain = NodeHasProperty (N, SDNPHasChain, ISE);
bool HasChain = PatternHasProperty(N, SDNPHasChain, ISE);
+ bool HasOutFlag = PatternHasProperty(N, SDNPOutFlag, ISE);
bool EmittedUseCheck = false;
if (HasChain) {
if (NodeHasChain)
OpNo = 1;
if (!isRoot) {
+ const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
// Multiple uses of actual result?
emitCheck(RootName + ".hasOneUse()");
EmittedUseCheck = true;
@@ -2327,6 +2329,7 @@ public:
(PatternHasProperty(N, SDNPInFlag, ISE) ||
PatternHasProperty(N, SDNPOptInFlag, ISE) ||
PatternHasProperty(N, SDNPOutFlag, ISE))) {
+ const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
if (!EmittedUseCheck) {
// Multiple uses of actual result?
emitCheck(RootName + ".hasOneUse()");
@@ -3315,9 +3318,10 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
PatternsByOpcode[Node->getOperator()].push_back(&PatternsToMatch[i]);
} else {
const ComplexPattern *CP;
- if (dynamic_cast<IntInit*>(Node->getLeafValue())) {
+ if (IntInit *II =
+ dynamic_cast<IntInit*>(Node->getLeafValue())) {
PatternsByOpcode[getSDNodeNamed("imm")].push_back(&PatternsToMatch[i]);
- } else if (NodeGetComplexPattern(Node, *this)) {
+ } else if ((CP = NodeGetComplexPattern(Node, *this))) {
std::vector<Record*> OpNodes = CP->getRootNodes();
for (unsigned j = 0, e = OpNodes.size(); j != e; j++) {
PatternsByOpcode[OpNodes[j]]