summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-03-01 22:09:11 +0000
committerChris Lattner <sabre@nondot.org>2010-03-01 22:09:11 +0000
commitd39f75ba392bd1886886274a392db9b36ca54c04 (patch)
tree3de8d33c1d3bf8b6be2729ba168106fefcc046d3 /llvm/utils/TableGen/CodeGenDAGPatterns.h
parent664ac989ffe9358365d5d761df7800ac570cc08c (diff)
downloadbcm5719-llvm-d39f75ba392bd1886886274a392db9b36ca54c04.tar.gz
bcm5719-llvm-d39f75ba392bd1886886274a392db9b36ca54c04.zip
Fix PR2590 by making PatternSortingPredicate actually be
ordered correctly. Previously it would get in trouble when two patterns were too similar and give them nondet ordering. We force this by using the record ID order as a fallback. The testsuite diff is due to alpha patterns being ordered slightly differently, the change is a semantic noop afaict: < lda $0,-100($16) --- > subq $16,100,$0 llvm-svn: 97509
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.h')
-rw-r--r--llvm/utils/TableGen/CodeGenDAGPatterns.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.h b/llvm/utils/TableGen/CodeGenDAGPatterns.h
index 60898bc04ce..37d633ecc21 100644
--- a/llvm/utils/TableGen/CodeGenDAGPatterns.h
+++ b/llvm/utils/TableGen/CodeGenDAGPatterns.h
@@ -476,15 +476,16 @@ public:
PatternToMatch(ListInit *preds,
TreePatternNode *src, TreePatternNode *dst,
const std::vector<Record*> &dstregs,
- unsigned complexity):
- Predicates(preds), SrcPattern(src), DstPattern(dst), Dstregs(dstregs),
- AddedComplexity(complexity) {}
+ unsigned complexity, unsigned uid)
+ : Predicates(preds), SrcPattern(src), DstPattern(dst),
+ Dstregs(dstregs), AddedComplexity(complexity), ID(uid) {}
ListInit *Predicates; // Top level predicate conditions to match.
TreePatternNode *SrcPattern; // Source pattern to match.
TreePatternNode *DstPattern; // Resulting pattern.
std::vector<Record*> Dstregs; // Physical register defs being matched.
unsigned AddedComplexity; // Add to matching pattern complexity.
+ unsigned ID; // Unique ID for the record.
ListInit *getPredicates() const { return Predicates; }
TreePatternNode *getSrcPattern() const { return SrcPattern; }
OpenPOWER on IntegriCloud