From: Evan Cheng Date: Thu, 19 Jan 2006 10:12:58 +0000 (+0000) Subject: Use pattern information to determine whether the use expects this X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7419de89fbafeaf5afda6cf93bba3520d75e1762;p=oota-llvm.git Use pattern information to determine whether the use expects this instruction to produce a result. e.g MUL8m, the instruction does not produce a explicit result. However it produces an implicit result in AL which would be copied to a temp. The root operator of the matching pattern is a mul so the use would expect it to produce a result. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25458 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index cd0527729af..03ec9951dcb 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -2255,10 +2255,13 @@ public: OS << " CodeGenMap[N.getValue(" << ValNo << ")] = InFlag;\n"; if (AddedChain && HasOutFlag) { - if (NumResults == 0) { + // Is this pattern expected to produce a result? + if (Pattern->getTypeNum(0) == MVT::isVoid || + Pattern->getTypeNum(0) == MVT::Flag) { OS << " return Result.getValue(N.ResNo+1);\n"; } else { - OS << " if (N.ResNo < " << NumResults << ")\n"; + OS << " if (N.ResNo < " + << ((NumResults > 1) ? NumResults : 1) << ")\n"; OS << " return Result.getValue(N.ResNo);\n"; OS << " else\n"; OS << " return Result.getValue(N.ResNo+1);\n";