summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
diff options
context:
space:
mode:
authorDaniel Sanders <daniel_l_sanders@apple.com>2017-10-15 19:01:32 +0000
committerDaniel Sanders <daniel_l_sanders@apple.com>2017-10-15 19:01:32 +0000
commitadbf58dc0b3cc85f02c379ee372c9fc06517e227 (patch)
tree0a9347b18269102aa01cc5c3f6e1d6258c4a2ee6 /llvm/utils/TableGen/CodeGenDAGPatterns.cpp
parent6d989436d063502266f8bc27007e6bb294ef4ec7 (diff)
downloadbcm5719-llvm-adbf58dc0b3cc85f02c379ee372c9fc06517e227.tar.gz
bcm5719-llvm-adbf58dc0b3cc85f02c379ee372c9fc06517e227.zip
[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. llvm-svn: 315872
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r--llvm/utils/TableGen/CodeGenDAGPatterns.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
index f6ef35a68c6..f6be8da02c3 100644
--- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
+++ b/llvm/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";
OpenPOWER on IntegriCloud