[PATCH] D143716: [llvm-debuginfo-analyzer] LLVM 16.0.0-rc1 Failing test on osx-64.

Carlos Alberto Enciso via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 10 02:10:48 PST 2023


CarlosAlbertoEnciso created this revision.
CarlosAlbertoEnciso added reviewers: Orlando, probinson, psamolysov, dblaikie, jryans.
CarlosAlbertoEnciso added projects: debug-info, LLVM, All.
Herald added subscribers: manas, ASDenysPetrov, pengfei, dkrupp, donat.nagy, Szelethus, a.sidorin, baloghadamsoftware, hiraditya.
CarlosAlbertoEnciso requested review of this revision.
Herald added a subscriber: llvm-commits.

[llvm-debuginfo-analyzer] LLVM 16.0.0-rc1 Failing test on osx-64.

As describe in: https://github.com/llvm/llvm-project/issues/60363

the following DebugInfo LogicalView Tests unit tests failed:

- ELFReader
- SelectElements

The tests fail only on the OSX-64 platform with the CMake options:

`-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON`

Using the same options on a Linux platform all the tests pass:
https://lab.llvm.org/buildbot/#/builders/196 (`llvm-x86_64-debian-dylib`)

Basically it is a dynamic library initialization affecting a static instance for the string pool (LVStringPool).

That string pool instance is accessed by all the logical elements to store/retrieve any associated string during the creation of the logical view.

For a logical view comparison, both logical readers (Reference and Target) use retrieved indexes when comparing their strings.

Moved the static instance to LVSupport module (unnamed namespace).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D143716

Files:
  llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
  llvm/include/llvm/DebugInfo/LogicalView/Core/LVStringPool.h
  llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
  llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp


Index: llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
===================================================================
--- llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
+++ llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
@@ -20,6 +20,12 @@
 
 #define DEBUG_TYPE "Support"
 
+namespace {
+// Unique string pool instance used by all logical readers.
+LVStringPool StringPool;
+} // namespace
+LVStringPool &llvm::logicalview::getStringPool() { return StringPool; }
+
 // Perform the following transformations to the given 'Path':
 // - all characters to lowercase.
 // - '\\' into '/' (Platform independent).
Index: llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
===================================================================
--- llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
+++ llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
@@ -16,6 +16,7 @@
 #include "llvm/ADT/SmallBitVector.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/Twine.h"
+#include "llvm/DebugInfo/LogicalView/Core/LVStringPool.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Path.h"
@@ -27,6 +28,9 @@
 namespace llvm {
 namespace logicalview {
 
+// Returns the unique string pool instance.
+LVStringPool &getStringPool();
+
 template <typename T>
 using TypeIsValid = std::bool_constant<std::is_pointer<T>::value>;
 
Index: llvm/include/llvm/DebugInfo/LogicalView/Core/LVStringPool.h
===================================================================
--- llvm/include/llvm/DebugInfo/LogicalView/Core/LVStringPool.h
+++ llvm/include/llvm/DebugInfo/LogicalView/Core/LVStringPool.h
@@ -35,8 +35,8 @@
 
 public:
   LVStringPool() { getIndex(""); }
-  LVStringPool(LVStringPool const &other) = delete;
-  LVStringPool(LVStringPool &&other) = delete;
+  LVStringPool(LVStringPool const &Other) = delete;
+  LVStringPool(LVStringPool &&Other) = delete;
   ~LVStringPool() = default;
 
   bool isValidIndex(size_t Index) const { return Index != BadIndex; }
@@ -71,11 +71,6 @@
     return (Index >= Entries.size()) ? StringRef() : Entries[Index]->getKey();
   }
 
-  static LVStringPool &getInstance() {
-    static LVStringPool Instance;
-    return Instance;
-  }
-
   void print(raw_ostream &OS) const {
     if (!Entries.empty()) {
       OS << "\nString Pool:\n";
@@ -90,8 +85,6 @@
 #endif
 };
 
-inline LVStringPool &getStringPool() { return LVStringPool::getInstance(); }
-
 } // namespace logicalview
 } // end namespace llvm
 
Index: llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
===================================================================
--- llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
+++ llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
@@ -15,7 +15,6 @@
 #define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVELEMENT_H
 
 #include "llvm/DebugInfo/LogicalView/Core/LVObject.h"
-#include "llvm/DebugInfo/LogicalView/Core/LVStringPool.h"
 #include "llvm/Support/Casting.h"
 #include <map>
 #include <set>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143716.496366.patch
Type: text/x-patch
Size: 3005 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230210/4f5e7311/attachment.bin>


More information about the llvm-commits mailing list