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.

llvm-svn: 25458
This commit is contained in:
Evan Cheng 2006-01-19 10:12:58 +00:00
parent 3d2cc7e2e9
commit a15731cd50
1 changed files with 5 additions and 2 deletions

View File

@ -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";