mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-13 23:18:58 +00:00
Workaround for PR2207, in which pred_iterator assert gets triggered due to a
wee problem in Xcode 2.[45]/gcc 4.0.1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49831 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
03eb38848c
commit
4bf393a13e
@ -36,8 +36,11 @@ public:
|
||||
|
||||
inline void advancePastNonPreds() {
|
||||
// Loop to ignore non predecessor uses (for example PHI nodes)...
|
||||
while (!It.atEnd() && !isa<TerminatorInst>(*It) && !isa<BasicBlock>(*It))
|
||||
while (!It.atEnd()) {
|
||||
if (isa<TerminatorInst>(*It) || isa<BasicBlock>(*It))
|
||||
break;
|
||||
++It;
|
||||
}
|
||||
}
|
||||
|
||||
inline PredIterator(_Ptr *bb) : It(bb->use_begin()) {
|
||||
|
@ -103,8 +103,15 @@ bool llvm::isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
|
||||
|
||||
// If AllowIdenticalEdges is true, then we allow this edge to be considered
|
||||
// non-critical iff all preds come from TI's block.
|
||||
for (; I != E; ++I)
|
||||
if (*I != FirstPred) return true;
|
||||
while (I != E) {
|
||||
pred_const_iterator E1 = E;
|
||||
if (*I != FirstPred)
|
||||
return true;
|
||||
// Note: leave this as is until no one ever compiles with either gcc 4.0.1
|
||||
// or Xcode 2. This seems to work around the pred_iterator assert in PR 2207
|
||||
E = pred_end(*I);
|
||||
++I;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user