From: Chris Lattner Date: Fri, 26 Feb 2010 07:35:27 +0000 (+0000) Subject: add a new setNumChildren method for resizing scopes. Tweak getHash() so X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ca56feaf381db61ad1f07873235185ef33f6426f;p=oota-llvm.git add a new setNumChildren method for resizing scopes. Tweak getHash() so that we never return a tombstone value, which (thankfully) triggers an assert in densemap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97214 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/utils/TableGen/DAGISelMatcher.h b/utils/TableGen/DAGISelMatcher.h index 6599b21e934..df6389555b4 100644 --- a/utils/TableGen/DAGISelMatcher.h +++ b/utils/TableGen/DAGISelMatcher.h @@ -100,7 +100,8 @@ public: } unsigned getHash() const { - return (getHashImpl() << 4) ^ getKind(); + // Clear the high bit so we don't conflict with tombstones etc. + return ((getHashImpl() << 4) ^ getKind()) & (~0U>>1); } void print(raw_ostream &OS, unsigned indent = 0) const; @@ -137,6 +138,15 @@ public: Children[i] = 0; return Res; } + + void setNumChildren(unsigned NC) { + if (NC < Children.size()) { + // delete any children we're about to lose pointers to. + for (unsigned i = NC, e = Children.size(); i != e; ++i) + delete Children[i]; + } + Children.resize(NC); + } static inline bool classof(const Matcher *N) { return N->getKind() == Scope;