mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 07:17:36 +00:00
New method SDep::isNormalMemoryOrBarrier() in ScheduleDAGInstrs.cpp.
Used to iterate over previously added memory dependencies in adjustChainDeps() and iterateChainSucc(). SDep::isCtrl() was previously used in these places, that also gave anti and output edges. The code may be worse if these are followed, because MisNeedChainEdge() will conservatively return true since a non-memory instruction has no memory operands, and a false chain dep will be added. It is also unnecessary since all memory accesses of interest will be reached by memory dependencies, and there is a budget limit for the number of edges traversed. This problem was found on an out-of-tree target with enabled alias analysis. No test case for an in-tree target has been found. Reviewed by Hal Finkel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225351 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -190,6 +190,12 @@ namespace llvm {
|
||||
return getKind() == Order && Contents.OrdKind == Barrier;
|
||||
}
|
||||
|
||||
/// isNormalMemoryOrBarrier - Test if this is could be any kind of memory
|
||||
/// dependence.
|
||||
bool isNormalMemoryOrBarrier() const {
|
||||
return (isNormalMemory() || isBarrier());
|
||||
}
|
||||
|
||||
/// isMustAlias - Test if this is an Order dependence that is marked
|
||||
/// as "must alias", meaning that the SUnits at either end of the edge
|
||||
/// have a memory dependence on a known memory location.
|
||||
|
||||
Reference in New Issue
Block a user