[clang] [OpenMP] Fix infinite recursion on global initializers (PR #126269)

Shilei Tian via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 7 09:31:27 PST 2025


================
@@ -22819,8 +22819,12 @@ class GlobalDeclRefChecker final : public StmtVisitor<GlobalDeclRefChecker> {
   void declareTargetInitializer(Decl *TD) {
     A = TD->getAttr<OMPDeclareTargetDeclAttr>();
     DeclVector.push_back(cast<VarDecl>(TD));
+    llvm::DenseSet<Decl *> Visited;
     while (!DeclVector.empty()) {
       VarDecl *TargetVarDecl = DeclVector.pop_back_val();
----------------
shiltian wrote:

Doesn't `pop_back_val` already remove the element from `DeclVector`, which means `DeclVector` will eventually go empty?

https://github.com/llvm/llvm-project/pull/126269


More information about the cfe-commits mailing list