Skip to content

Commit 48424ac

Browse files
spavloffkraj
authored andcommitted
Prevent revisiting block when searching for noreturn vars
When searching for noreturn variable initializations, do not visit CFG blocks that are already visited, it prevents hanging the analysis. It must fix Ihttps://github.com/llvm/issues/150336. Upstream-Status: Submitted [llvm#150582] Signed-off-by: Khem Raj <[email protected]>
1 parent 54d3e23 commit 48424ac

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

clang/test/SemaCXX/noreturn-vars.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,20 @@ extern void abc_02(func_type *);
225225
abc_02(&func_ptr);
226226
func_ptr();
227227
} // expected-warning {{function declared 'noreturn' should not return}}
228+
229+
namespace Issue150336 {
230+
void free(void *);
231+
typedef void (*sel_freefunc)(void *);
232+
struct gmx_ana_selmethod_t {
233+
sel_freefunc free;
234+
int nparams;
235+
int *param;
236+
};
237+
void gmx_selelem_free_method(struct gmx_ana_selmethod_t* method, void* mdata) {
238+
sel_freefunc free_func = 0;
239+
for (int i = 0; i < method->nparams; ++i)
240+
free(&method->param[i]);
241+
if (mdata && free_func)
242+
free_func(mdata);
243+
}
244+
}

0 commit comments

Comments
 (0)