Skip to content

Commit e59106e

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 llvm#150336. Upstream-Status: Submitted [llvm#150582] Signed-off-by: Khem Raj <[email protected]>
1 parent 6a26b8c commit e59106e

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)