Skip to content

Commit c4a89f1

Browse files
authored
[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.
1 parent ce68327 commit c4a89f1

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

flang/lib/Optimizer/Transforms/OMPFunctionFiltering.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,15 @@ class OMPFunctionFilteringPass
7979
// Remove the callOp
8080
callOp->erase();
8181
}
82-
if (!hasTargetRegion)
82+
if (!hasTargetRegion) {
8383
funcOp.erase();
84-
else if (declareTargetOp)
84+
return WalkResult::skip();
85+
}
86+
if (declareTargetOp)
8587
declareTargetOp.setDeclareTarget(declareType,
8688
omp::DeclareTargetCaptureClause::to);
8789
}
90+
return WalkResult::advance();
8891
});
8992
}
9093
};

0 commit comments

Comments
 (0)