Skip to content

Commit a44676a

Browse files
author
git apple-llvm automerger
committed
Merge commit 'f207cb4ed22a' from llvm.org/release/21.x into stable/21.x
2 parents bcadc18 + f207cb4 commit a44676a

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

clang/lib/Sema/AnalysisBasedWarnings.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,8 +505,12 @@ static bool areAllValuesNoReturn(const VarDecl *VD, const CFGBlock &VarBlk,
505505

506506
TransferFunctions TF(VD);
507507
BackwardDataflowWorklist Worklist(*AC.getCFG(), AC);
508+
llvm::DenseSet<const CFGBlock *> Visited;
508509
Worklist.enqueueBlock(&VarBlk);
509510
while (const CFGBlock *B = Worklist.dequeue()) {
511+
if (Visited.contains(B))
512+
continue;
513+
Visited.insert(B);
510514
// First check the current block.
511515
for (CFGBlock::const_reverse_iterator ri = B->rbegin(), re = B->rend();
512516
ri != re; ++ri) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// RUN: %clang_cc1 -fsyntax-only %s -Weverything
2+
3+
void free(void *);
4+
typedef void (*set_free_func)(void *);
5+
struct Method {
6+
int nparams;
7+
int *param;
8+
};
9+
void selelem_free_method(struct Method* method, void* data) {
10+
set_free_func free_func = 0;
11+
for (int i = 0; i < method->nparams; ++i)
12+
free(&method->param[i]);
13+
if (data && free_func)
14+
free_func(data);
15+
}

0 commit comments

Comments
 (0)