summaryrefslogtreecommitdiff
path: root/utils/TableGen/DAGISelMatcherGen.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-02-19 00:33:13 +0000
committerChris Lattner <sabre@nondot.org>2010-02-19 00:33:13 +0000
commit853b919d93c62498ba30e7a78ab393291517cd42 (patch)
treee8ff6e672cc30e7f20fcc6205097311ef08d2b31 /utils/TableGen/DAGISelMatcherGen.cpp
parentf0e7c87e56df43b012667762e2fb3e1b9edb766d (diff)
downloadllvm-853b919d93c62498ba30e7a78ab393291517cd42.tar.gz
llvm-853b919d93c62498ba30e7a78ab393291517cd42.tar.bz2
llvm-853b919d93c62498ba30e7a78ab393291517cd42.tar.xz
I confused myself, temporaries will be recorded right along with other inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96639 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/DAGISelMatcherGen.cpp')
-rw-r--r--utils/TableGen/DAGISelMatcherGen.cpp38
1 files changed, 7 insertions, 31 deletions
diff --git a/utils/TableGen/DAGISelMatcherGen.cpp b/utils/TableGen/DAGISelMatcherGen.cpp
index 9bf929ceea..d87f737816 100644
--- a/utils/TableGen/DAGISelMatcherGen.cpp
+++ b/utils/TableGen/DAGISelMatcherGen.cpp
@@ -21,35 +21,15 @@ namespace {
/// matcher or it can be a temporary value created by the emitter for things
/// like constants.
class ResultVal {
- unsigned Number : 30;
- enum {
- Recorded, Temporary
- } Kind : 2; // True if temporary, false if recorded.
+ unsigned Number;
public:
- static ResultVal getRecorded(unsigned N) {
+ static ResultVal get(unsigned N) {
ResultVal R;
R.Number = N;
- R.Kind = Recorded;
- return R;
- }
-
- static ResultVal getTemp(unsigned N) {
- ResultVal R;
- R.Number = N;
- R.Kind = Temporary;
return R;
}
- bool isTemp() const { return Kind == Temporary; }
- bool isRecorded() const { return Kind == Recorded; }
-
- unsigned getTempNo() const {
- assert(isTemp());
- return Number;
- }
-
- unsigned getRecordedNo() const {
- assert(isRecorded());
+ unsigned getNumber() const {
return Number;
}
};
@@ -74,10 +54,6 @@ namespace {
/// record into.
unsigned NextRecordedOperandNo;
- /// NextTemporary - As we generate code, this indicates the next temporary
- /// ID that will be generated.
- unsigned NextTemporary;
-
/// InputChains - This maintains the position in the recorded nodes array of
/// all of the recorded input chains.
SmallVector<unsigned, 2> InputChains;
@@ -123,7 +99,7 @@ namespace {
MatcherGen::MatcherGen(const PatternToMatch &pattern,
const CodeGenDAGPatterns &cgp)
-: Pattern(pattern), CGP(cgp), NextRecordedOperandNo(0), NextTemporary(0),
+: Pattern(pattern), CGP(cgp), NextRecordedOperandNo(0),
Matcher(0), CurPredicate(0) {
// We need to produce the matcher tree for the patterns source pattern. To do
// this we need to match the structure as well as the types. To do the type
@@ -449,7 +425,7 @@ void MatcherGen::EmitResultLeafAsOperand(const TreePatternNode *N,
if (IntInit *II = dynamic_cast<IntInit*>(N->getLeafValue())) {
AddMatcherNode(new EmitIntegerMatcherNode(II->getValue(),N->getTypeNum(0)));
- ResultOps.push_back(ResultVal::getTemp(NextTemporary++));
+ ResultOps.push_back(ResultVal::get(NextRecordedOperandNo++));
return;
}
@@ -458,13 +434,13 @@ void MatcherGen::EmitResultLeafAsOperand(const TreePatternNode *N,
if (DI->getDef()->isSubClassOf("Register")) {
AddMatcherNode(new EmitRegisterMatcherNode(DI->getDef(),
N->getTypeNum(0)));
- ResultOps.push_back(ResultVal::getTemp(NextTemporary++));
+ ResultOps.push_back(ResultVal::get(NextRecordedOperandNo++));
return;
}
if (DI->getDef()->getName() == "zero_reg") {
AddMatcherNode(new EmitRegisterMatcherNode(0, N->getTypeNum(0)));
- ResultOps.push_back(ResultVal::getTemp(NextTemporary++));
+ ResultOps.push_back(ResultVal::get(NextRecordedOperandNo++));
return;
}