executeOp.operandsMutable().append(asyncTokens) in
addAsyncDependencyAfter can resize and invalidate iterators.
Fixes reports like https://reviews.llvm.org/P8286
Reviewed By: herhut
Differential Revision: https://reviews.llvm.org/D124577
// Add the async dependency to each user of the `async.execute` token.
auto asyncTokens = executeOp.getResults().take_back(dependencies.size());
- for (Operation *user : executeOp.token().getUsers())
+ SmallVector<Operation *, 4> users(executeOp.token().user_begin(),
+ executeOp.token().user_end());
+ for (Operation *user : users)
addAsyncDependencyAfter(asyncTokens, user);
}
}