From b10e0a29cabd4d3ded0253528c8e4f5dc250f42c Mon Sep 17 00:00:00 2001 From: Daniel Sanders Date: Sun, 15 Oct 2017 19:01:32 +0000 Subject: [PATCH] [tablegen] Use hasPredCode()/hasImmCode() instead of getPredCode().empty()/getImmCode().empty(). NFC These are cheaper ways of testing for the presence of code than generating the C++ code and testing it's empty. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315872 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/CodeGenDAGPatterns.cpp | 18 ++++++++++++++---- utils/TableGen/CodeGenDAGPatterns.h | 4 +++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/utils/TableGen/CodeGenDAGPatterns.cpp b/utils/TableGen/CodeGenDAGPatterns.cpp index f6ef35a68c6..f6be8da02c3 100644 --- a/utils/TableGen/CodeGenDAGPatterns.cpp +++ b/utils/TableGen/CodeGenDAGPatterns.cpp @@ -807,8 +807,14 @@ TypeSetByHwMode TypeInfer::getLegalTypes() { /// TreePredicateFn constructor. Here 'N' is a subclass of PatFrag. TreePredicateFn::TreePredicateFn(TreePattern *N) : PatFragRec(N) { - assert((getPredCode().empty() || getImmCode().empty()) && - ".td file corrupt: can't have a node predicate *and* an imm predicate"); + assert( + (!hasPredCode() || !hasImmCode()) && + ".td file corrupt: can't have a node predicate *and* an imm predicate"); +} + +bool TreePredicateFn::hasPredCode() const { + return isLoad() || isStore() || + !PatFragRec->getRecord()->getValueAsString("PredicateCode").empty(); } std::string TreePredicateFn::getPredCode() const { @@ -933,6 +939,10 @@ std::string TreePredicateFn::getPredCode() const { return Code; } +bool TreePredicateFn::hasImmCode() const { + return !PatFragRec->getRecord()->getValueAsString("ImmediateCode").empty(); +} + std::string TreePredicateFn::getImmCode() const { return PatFragRec->getRecord()->getValueAsString("ImmediateCode"); } @@ -1015,7 +1025,7 @@ StringRef TreePredicateFn::getImmTypeIdentifier() const { /// isAlwaysTrue - Return true if this is a noop predicate. bool TreePredicateFn::isAlwaysTrue() const { - return getPredCode().empty() && getImmCode().empty(); + return !hasPredCode() && !hasImmCode(); } /// Return the name to use in the generated code to reference this, this is @@ -1085,7 +1095,7 @@ std::string TreePredicateFn::getCodeToRunOnSDNode() const { } // Handle arbitrary node predicates. - assert(!getPredCode().empty() && "Don't have any predicate code!"); + assert(hasPredCode() && "Don't have any predicate code!"); StringRef ClassName; if (PatFragRec->getOnlyTree()->isLeaf()) ClassName = "SDNode"; diff --git a/utils/TableGen/CodeGenDAGPatterns.h b/utils/TableGen/CodeGenDAGPatterns.h index 5b047bc182d..1f7e9fb98d3 100644 --- a/utils/TableGen/CodeGenDAGPatterns.h +++ b/utils/TableGen/CodeGenDAGPatterns.h @@ -447,7 +447,7 @@ public: /// isAlwaysTrue - Return true if this is a noop predicate. bool isAlwaysTrue() const; - bool isImmediatePattern() const { return !getImmCode().empty(); } + bool isImmediatePattern() const { return hasImmCode(); } /// getImmediatePredicateCode - Return the code that evaluates this pattern if /// this is an immediate predicate. It is an error to call this on a @@ -511,6 +511,8 @@ public: Record *getScalarMemoryVT() const; private: + bool hasPredCode() const; + bool hasImmCode() const; std::string getPredCode() const; std::string getImmCode() const; bool immCodeUsesAPInt() const; -- 2.50.1