aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/DAGISelEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-12-21 05:31:05 +0000
committerChris Lattner <sabre@nondot.org>2005-12-21 05:31:05 +0000
commit4e6a1d2433d498ae187791d3b8c925bce97922e6 (patch)
tree101d0afa5ee515e9506a53a22e8fc2c9c39a38f9 /utils/TableGen/DAGISelEmitter.cpp
parent7669a51c347db563a8583c4a4466e3bbb30bdb44 (diff)
downloadexternal_llvm-4e6a1d2433d498ae187791d3b8c925bce97922e6.zip
external_llvm-4e6a1d2433d498ae187791d3b8c925bce97922e6.tar.gz
external_llvm-4e6a1d2433d498ae187791d3b8c925bce97922e6.tar.bz2
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
Diffstat (limited to 'utils/TableGen/DAGISelEmitter.cpp')
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index 80f226c..be8fb75 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 <opname>" or "<opname>". 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++)