@@ -2873,26 +2873,26 @@ struct CustomOpToOnnxOps : public OpRewritePattern<ONNXCustomOp> {
28732873
28742874 static LogicalResult verifyOpsErasingOnError (
28752875 ValueRange values, PatternRewriter &rewriter) {
2876- if (llvm::any_of (values, [](Value value) {
2877- return value && failed (verifyOpValidity (value.getDefiningOp ()));
2876+ if (llvm::all_of (values, [](Value value) {
2877+ return ! value || succeeded (verifyOpValidity (value.getDefiningOp ()));
28782878 })) {
2879- SmallVector<Operation *> opsToErase;
2880- for (auto value : values) {
2881- if (value) {
2882- opsToErase.push_back (value.getDefiningOp ());
2883- }
2884- }
2885- llvm::sort (opsToErase);
2886- opsToErase.erase (llvm::unique (opsToErase), opsToErase.end ());
2887- // We need to ensure that the ops get erased in reverse topological order,
2888- // as its only allowed to erase an op if it does not have an use
2889- computeTopologicalSorting (opsToErase);
2890- for (auto *op : llvm::reverse (opsToErase)) {
2891- rewriter.eraseOp (op);
2879+ return success ();
2880+ }
2881+ SmallVector<Operation *> opsToErase;
2882+ for (auto value : values) {
2883+ if (value) {
2884+ opsToErase.push_back (value.getDefiningOp ());
28922885 }
2893- return failure ();
28942886 }
2895- return success ();
2887+ llvm::sort (opsToErase);
2888+ opsToErase.erase (llvm::unique (opsToErase), opsToErase.end ());
2889+ // We need to ensure that the ops get erased in reverse topological order,
2890+ // as its only allowed to erase an op if it does not have an use
2891+ computeTopologicalSorting (opsToErase);
2892+ for (auto *op : llvm::reverse (opsToErase)) {
2893+ rewriter.eraseOp (op);
2894+ }
2895+ return failure ();
28962896 }
28972897
28982898 static SmallVector<NamedAttribute> getFilteredAttrs (
0 commit comments