[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