forked from OSchip/llvm-project
ScopInfo: Make clear that no double-free problem exists
When running the clang static analyser to check for memory issues, this code originally showed a double free, as the analyser was unable to understand that isl_set_free always returns NULL and consequently later uses of the isl object we just freed will never be reached. Without this knowledge, the analyser has to issue a warning. We refactor the code to make it clear that for empty maps the current loop iteration is aborted. llvm-svn: 280940
This commit is contained in:
parent
b316dc166f
commit
55a7af7da5
|
@ -1536,10 +1536,12 @@ void ScopStmt::checkForReductions() {
|
|||
isl_map_intersect_domain(MA->getAccessRelation(), getDomain());
|
||||
isl_set *Accs = isl_map_range(AccRel);
|
||||
|
||||
if (isl_set_has_equal_space(AllAccs, Accs) || isl_set_free(Accs)) {
|
||||
if (isl_set_has_equal_space(AllAccs, Accs)) {
|
||||
isl_set *OverlapAccs = isl_set_intersect(Accs, isl_set_copy(AllAccs));
|
||||
Valid = Valid && isl_set_is_empty(OverlapAccs);
|
||||
isl_set_free(OverlapAccs);
|
||||
} else {
|
||||
isl_set_free(Accs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue