From 4e6a1d2433d498ae187791d3b8c925bce97922e6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 21 Dec 2005 05:31:05 +0000 Subject: [PATCH] Eliminate some GCC warnings from the generated code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24897 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/DAGISelEmitter.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 80f226cd79f..be8fb75b43a 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -1770,18 +1770,24 @@ public: TreePatternNode *pattern, TreePatternNode *instr, unsigned PatNum, std::ostream &os) : ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr), - PatternNo(PatNum), OS(os), FoundChain(false), TmpNo(0) {}; + PatternNo(PatNum), OS(os), FoundChain(false), TmpNo(0) {} + /// isPredeclaredSDOperand - Return true if this is one of the predeclared + /// SDOperands. + bool isPredeclaredSDOperand(const std::string &OpName) const { + return OpName == "N0" || OpName == "N1" || OpName == "N2" || + OpName == "N00" || OpName == "N01" || + OpName == "N10" || OpName == "N11" || + OpName == "Tmp0" || OpName == "Tmp1" || + OpName == "Tmp2" || OpName == "Tmp3"; + } + /// DeclareSDOperand - Emit "SDOperand " or "". This works /// around an ugly GCC bug where SelectCode is using too much stack space void DeclareSDOperand(const std::string &OpName) const { // If it's one of the common cases declared at the top of SelectCode, just // use the existing declaration. - if (OpName == "N0" || OpName == "N1" || OpName == "N2" || - OpName == "N00" || OpName == "N01" || - OpName == "N10" || OpName == "N11" || - OpName == "Tmp0" || OpName == "Tmp1" || - OpName == "Tmp2" || OpName == "Tmp3") + if (isPredeclaredSDOperand(OpName)) OS << OpName; else OS << "SDOperand " << OpName; @@ -1986,9 +1992,11 @@ public: std::string Fn = CP->getSelectFunc(); NumRes = CP->getNumOperands(); for (unsigned i = 0; i != NumRes; ++i) { - OS << " "; - DeclareSDOperand("Tmp" + utostr(i+ResNo)); - OS << ";\n"; + if (!isPredeclaredSDOperand("Tmp" + utostr(i+ResNo))) { + OS << " "; + DeclareSDOperand("Tmp" + utostr(i+ResNo)); + OS << ";\n"; + } } OS << " if (!" << Fn << "(" << Val; for (unsigned i = 0; i < NumRes; i++)