diff options
author | Dan Gohman <gohman@apple.com> | 2009-01-16 02:05:52 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-01-16 02:05:52 +0000 |
commit | 05aae18165a41e2bb0e7de0eba2656cc5537b162 (patch) | |
tree | c6715710958b63dd7fc5b3dfa9fc58c1d7a48380 /utils | |
parent | 61c6bf37ef7d6066d12efa40639d67e7caf14b2d (diff) | |
download | external_llvm-05aae18165a41e2bb0e7de0eba2656cc5537b162.zip external_llvm-05aae18165a41e2bb0e7de0eba2656cc5537b162.tar.gz external_llvm-05aae18165a41e2bb0e7de0eba2656cc5537b162.tar.bz2 |
Add support for instructions with multiple ComplexPatterns, by
adding more information to the temporary variables names so that
they don't conflict.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62296 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 2c6b6da..ace1d76 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -613,8 +613,8 @@ public: std::string Fn = CP->getSelectFunc(); unsigned NumOps = CP->getNumOperands(); for (unsigned i = 0; i < NumOps; ++i) { - emitDecl("CPTmp" + utostr(i)); - emitCode("SDValue CPTmp" + utostr(i) + ";"); + emitDecl("CPTmp" + RootName + "_" + utostr(i)); + emitCode("SDValue CPTmp" + RootName + "_" + utostr(i) + ";"); } if (CP->hasProperty(SDNPHasChain)) { emitDecl("CPInChain"); @@ -625,7 +625,7 @@ public: std::string Code = Fn + "(" + RootName + ", " + RootName; for (unsigned i = 0; i < NumOps; i++) - Code += ", CPTmp" + utostr(i); + Code += ", CPTmp" + RootName + "_" + utostr(i); if (CP->hasProperty(SDNPHasChain)) { ChainName = "Chain" + ChainSuffix; Code += ", CPInChain, Chain" + ChainSuffix; @@ -687,8 +687,8 @@ public: std::string Fn = CP->getSelectFunc(); unsigned NumOps = CP->getNumOperands(); for (unsigned i = 0; i < NumOps; ++i) { - emitDecl("CPTmp" + utostr(i)); - emitCode("SDValue CPTmp" + utostr(i) + ";"); + emitDecl("CPTmp" + RootName + "_" + utostr(i)); + emitCode("SDValue CPTmp" + RootName + "_" + utostr(i) + ";"); } if (CP->hasProperty(SDNPHasChain)) { const SDNodeInfo &PInfo = CGP.getSDNodeInfo(Parent->getOperator()); @@ -713,7 +713,7 @@ public: } Code += RootName; for (unsigned i = 0; i < NumOps; i++) - Code += ", CPTmp" + utostr(i); + Code += ", CPTmp" + RootName + "_" + utostr(i); if (CP->hasProperty(SDNPHasChain)) Code += ", CPInChain, Chain" + ChainSuffix; emitCheck(Code + ")"); @@ -862,7 +862,7 @@ public: NodeOps.push_back(Val); } else if (N->isLeaf() && (CP = NodeGetComplexPattern(N, CGP))) { for (unsigned i = 0; i < CP->getNumOperands(); ++i) { - NodeOps.push_back("CPTmp" + utostr(i)); + NodeOps.push_back("CPTmp" + Val + "_" + utostr(i)); } } else { // This node, probably wrapped in a SDNodeXForm, behaves like a leaf |