[flang-commits] [flang] c4a89f1 - [flang][OpenMP] Fix use-after-free in OMPFunctionFiltering (#84373)
via flang-commits
flang-commits at lists.llvm.org
Fri Mar 8 07:16:02 PST 2024
Author: Krzysztof Parzyszek
Date: 2024-03-08T09:15:59-06:00
New Revision: c4a89f1538bbcac19628570b6b489cd9ce4265e2
URL: https://github.com/llvm/llvm-project/commit/c4a89f1538bbcac19628570b6b489cd9ce4265e2
DIFF: https://github.com/llvm/llvm-project/commit/c4a89f1538bbcac19628570b6b489cd9ce4265e2.diff
LOG: [flang][OpenMP] Fix use-after-free in OMPFunctionFiltering (#84373)
When walking over functions (in pre-order), if the function being
visited needs to be erased, skip visiting its regions.
This was detected by address sanitizer.
Added:
Modified:
flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp
Removed:
################################################################################
diff --git a/flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp b/flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp
index 466bf53e8dbd60..959099d039a5e6 100644
--- a/flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp
+++ b/flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp
@@ -79,12 +79,15 @@ class OMPFunctionFilteringPass
// Remove the callOp
callOp->erase();
}
- if (!hasTargetRegion)
+ if (!hasTargetRegion) {
funcOp.erase();
- else if (declareTargetOp)
+ return WalkResult::skip();
+ }
+ if (declareTargetOp)
declareTargetOp.setDeclareTarget(declareType,
omp::DeclareTargetCaptureClause::to);
}
+ return WalkResult::advance();
});
}
};
More information about the flang-commits
mailing list