mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-03 15:26:18 +00:00
Add a workaround for building with old versions of clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153820 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -346,16 +346,7 @@ public:
|
|||||||
return dominates(A, B);
|
return dominates(A, B);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool properlyDominates(const NodeT *A, const NodeT *B) {
|
bool properlyDominates(const NodeT *A, const NodeT *B);
|
||||||
if (A == B)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Cast away the const qualifiers here. This is ok since
|
|
||||||
// this function doesn't actually return the values returned
|
|
||||||
// from getNode.
|
|
||||||
return dominates(getNode(const_cast<NodeT *>(A)),
|
|
||||||
getNode(const_cast<NodeT *>(B)));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool dominatedBySlowTreeWalk(const DomTreeNodeBase<NodeT> *A,
|
bool dominatedBySlowTreeWalk(const DomTreeNodeBase<NodeT> *A,
|
||||||
const DomTreeNodeBase<NodeT> *B) const {
|
const DomTreeNodeBase<NodeT> *B) const {
|
||||||
@@ -429,16 +420,7 @@ public:
|
|||||||
return dominatedBySlowTreeWalk(A, B);
|
return dominatedBySlowTreeWalk(A, B);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool dominates(const NodeT *A, const NodeT *B) {
|
bool dominates(const NodeT *A, const NodeT *B);
|
||||||
if (A == B)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// Cast away the const qualifiers here. This is ok since
|
|
||||||
// this function doesn't actually return the values returned
|
|
||||||
// from getNode.
|
|
||||||
return dominates(getNode(const_cast<NodeT *>(A)),
|
|
||||||
getNode(const_cast<NodeT *>(B)));
|
|
||||||
}
|
|
||||||
|
|
||||||
NodeT *getRoot() const {
|
NodeT *getRoot() const {
|
||||||
assert(this->Roots.size() == 1 && "Should always have entry node!");
|
assert(this->Roots.size() == 1 && "Should always have entry node!");
|
||||||
@@ -704,6 +686,32 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// These two functions are declare out of line as a workaround for building
|
||||||
|
// with old (< r147295) versions of clang because of pr11642.
|
||||||
|
template<class NodeT>
|
||||||
|
bool DominatorTreeBase<NodeT>::dominates(const NodeT *A, const NodeT *B) {
|
||||||
|
if (A == B)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Cast away the const qualifiers here. This is ok since
|
||||||
|
// this function doesn't actually return the values returned
|
||||||
|
// from getNode.
|
||||||
|
return dominates(getNode(const_cast<NodeT *>(A)),
|
||||||
|
getNode(const_cast<NodeT *>(B)));
|
||||||
|
}
|
||||||
|
template<class NodeT>
|
||||||
|
bool
|
||||||
|
DominatorTreeBase<NodeT>::properlyDominates(const NodeT *A, const NodeT *B) {
|
||||||
|
if (A == B)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Cast away the const qualifiers here. This is ok since
|
||||||
|
// this function doesn't actually return the values returned
|
||||||
|
// from getNode.
|
||||||
|
return dominates(getNode(const_cast<NodeT *>(A)),
|
||||||
|
getNode(const_cast<NodeT *>(B)));
|
||||||
|
}
|
||||||
|
|
||||||
EXTERN_TEMPLATE_INSTANTIATION(class DominatorTreeBase<BasicBlock>);
|
EXTERN_TEMPLATE_INSTANTIATION(class DominatorTreeBase<BasicBlock>);
|
||||||
|
|
||||||
//===-------------------------------------
|
//===-------------------------------------
|
||||||
|
Reference in New Issue
Block a user