[llvm] f1075a3 - [FileSystem] Avoid <stack> include (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 21 04:45:07 PDT 2024


Author: Nikita Popov
Date: 2024-06-21T13:44:46+02:00
New Revision: f1075a34ab30f67915deb9a519dd98e025c5c998

URL: https://github.com/llvm/llvm-project/commit/f1075a34ab30f67915deb9a519dd98e025c5c998
DIFF: https://github.com/llvm/llvm-project/commit/f1075a34ab30f67915deb9a519dd98e025c5c998.diff

LOG: [FileSystem] Avoid <stack> include (NFC)

The standard pattern in LLVM is to directly use vectors for stacks,
without an additional std::stack wrapper to rename some methods.

Added: 
    

Modified: 
    llvm/include/llvm/Support/FileSystem.h
    llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
    llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Support/FileSystem.h b/llvm/include/llvm/Support/FileSystem.h
index 0a9c576027f96..9cf53360b4e96 100644
--- a/llvm/include/llvm/Support/FileSystem.h
+++ b/llvm/include/llvm/Support/FileSystem.h
@@ -40,7 +40,6 @@
 #include <cstdint>
 #include <ctime>
 #include <memory>
-#include <stack>
 #include <string>
 #include <system_error>
 #include <vector>
@@ -1471,7 +1470,7 @@ namespace detail {
 
   /// Keeps state for the recursive_directory_iterator.
   struct RecDirIterState {
-    std::stack<directory_iterator, std::vector<directory_iterator>> Stack;
+    std::vector<directory_iterator> Stack;
     uint16_t Level = 0;
     bool HasNoPushRequest = false;
   };
@@ -1490,8 +1489,8 @@ class recursive_directory_iterator {
                                         bool follow_symlinks = true)
       : State(std::make_shared<detail::RecDirIterState>()),
         Follow(follow_symlinks) {
-    State->Stack.push(directory_iterator(path, ec, Follow));
-    if (State->Stack.top() == directory_iterator())
+    State->Stack.push_back(directory_iterator(path, ec, Follow));
+    if (State->Stack.back() == directory_iterator())
       State.reset();
   }
 
@@ -1502,27 +1501,28 @@ class recursive_directory_iterator {
     if (State->HasNoPushRequest)
       State->HasNoPushRequest = false;
     else {
-      file_type type = State->Stack.top()->type();
+      file_type type = State->Stack.back()->type();
       if (type == file_type::symlink_file && Follow) {
         // Resolve the symlink: is it a directory to recurse into?
-        ErrorOr<basic_file_status> status = State->Stack.top()->status();
+        ErrorOr<basic_file_status> status = State->Stack.back()->status();
         if (status)
           type = status->type();
         // Otherwise broken symlink, and we'll continue.
       }
       if (type == file_type::directory_file) {
-        State->Stack.push(directory_iterator(*State->Stack.top(), ec, Follow));
-        if (State->Stack.top() != end_itr) {
+        State->Stack.push_back(
+            directory_iterator(*State->Stack.back(), ec, Follow));
+        if (State->Stack.back() != end_itr) {
           ++State->Level;
           return *this;
         }
-        State->Stack.pop();
+        State->Stack.pop_back();
       }
     }
 
     while (!State->Stack.empty()
-           && State->Stack.top().increment(ec) == end_itr) {
-      State->Stack.pop();
+           && State->Stack.back().increment(ec) == end_itr) {
+      State->Stack.pop_back();
       --State->Level;
     }
 
@@ -1533,8 +1533,8 @@ class recursive_directory_iterator {
     return *this;
   }
 
-  const directory_entry &operator*() const { return *State->Stack.top(); }
-  const directory_entry *operator->() const { return &*State->Stack.top(); }
+  const directory_entry &operator*() const { return *State->Stack.back(); }
+  const directory_entry *operator->() const { return &*State->Stack.back(); }
 
   // observers
   /// Gets the current level. Starting path is at level 0.
@@ -1554,10 +1554,10 @@ class recursive_directory_iterator {
     do {
       if (ec)
         report_fatal_error("Error incrementing directory iterator.");
-      State->Stack.pop();
+      State->Stack.pop_back();
       --State->Level;
     } while (!State->Stack.empty()
-             && State->Stack.top().increment(ec) == end_itr);
+             && State->Stack.back().increment(ec) == end_itr);
 
     // Check if we are done. If so, create an end iterator.
     if (State->Stack.empty())

diff  --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index bf0ca32e8b99f..dbf7154229d38 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -57,6 +57,7 @@
 
 #include <cstdint>
 #include <optional>
+#include <stack>
 
 #define DEBUG_TYPE "openmp-ir-builder"
 

diff  --git a/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp b/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp
index 0d1d9730ce807..c1e5ab1a2b561 100644
--- a/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp
+++ b/llvm/lib/Transforms/IPO/MemProfContextDisambiguation.cpp
@@ -44,6 +44,7 @@
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/Utils/Cloning.h"
+#include <deque>
 #include <sstream>
 #include <unordered_map>
 #include <vector>


        


More information about the llvm-commits mailing list