[llvm] 154331 build with c++23 on main (PR #154372)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 19 09:09:24 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-debuginfo
Author: Kyle Krüger (kykrueger)
<details>
<summary>Changes</summary>
closes #<!-- -->154331
This PR addresses all minimum changes needed to compile LLVM and MLIR with the c++23 standard.
It is a work in progress and to be reviewed for better methods of handling the parts of the build broken by c++23.
---
Full diff: https://github.com/llvm/llvm-project/pull/154372.diff
16 Files Affected:
- (modified) llvm/CMakeLists.txt (+1-1)
- (modified) llvm/include/llvm/DebugInfo/GSYM/GsymContext.h (+1)
- (modified) llvm/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h (+1)
- (modified) llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h (+3-3)
- (modified) llvm/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h (+1-1)
- (modified) llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h (+2)
- (modified) llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h (+2)
- (modified) llvm/include/llvm/MC/MCGOFFStreamer.h (+1-3)
- (modified) llvm/lib/DebugInfo/GSYM/GsymContext.cpp (+1)
- (modified) llvm/lib/DebugInfo/PDB/Native/InputFile.cpp (+5)
- (modified) llvm/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp (+9)
- (modified) llvm/lib/MC/MCGOFFStreamer.cpp (+7)
- (modified) llvm/lib/Remarks/BitstreamRemarkParser.cpp (+2)
- (modified) llvm/lib/Remarks/BitstreamRemarkParser.h (+1-2)
- (modified) llvm/lib/TableGen/TGParser.cpp (+7)
- (modified) llvm/lib/TableGen/TGParser.h (+4-6)
``````````diff
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index b672cb9365284..133a76c0b6032 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -59,7 +59,7 @@ set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name
include(GNUInstallDirs)
# This C++ standard is required to build LLVM.
-set(LLVM_REQUIRED_CXX_STANDARD 17)
+set(LLVM_REQUIRED_CXX_STANDARD 23)
# If we find that the cache contains CMAKE_CXX_STANDARD it means that it's a old CMakeCache.txt
# and we can just inform the user and then reset it.
diff --git a/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h b/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
index 9c04ff63c8059..07d599cf9b5c6 100644
--- a/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
+++ b/llvm/include/llvm/DebugInfo/GSYM/GsymContext.h
@@ -30,6 +30,7 @@ class GsymReader;
class GsymContext : public DIContext {
public:
GsymContext(std::unique_ptr<GsymReader> Reader);
+ ~GsymContext();
GsymContext(GsymContext &) = delete;
GsymContext &operator=(GsymContext &) = delete;
diff --git a/llvm/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h b/llvm/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
index 7e15433b839ed..98f219ae76f31 100644
--- a/llvm/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
+++ b/llvm/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
@@ -10,6 +10,7 @@
#define LLVM_DEBUGINFO_PDB_IPDBRAWSYMBOL_H
#include "PDBTypes.h"
+#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/DebugInfo/CodeView/CodeView.h"
diff --git a/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h b/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
index 0e7b9663f27d2..71df1d59c2177 100644
--- a/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
+++ b/llvm/include/llvm/DebugInfo/PDB/Native/InputFile.h
@@ -55,9 +55,9 @@ class InputFile {
getOrCreateTypeCollection(TypeCollectionKind Kind);
public:
- InputFile(PDBFile *Pdb) { PdbOrObj = Pdb; }
- InputFile(object::COFFObjectFile *Obj) { PdbOrObj = Obj; }
- InputFile(MemoryBuffer *Buffer) { PdbOrObj = Buffer; }
+ InputFile(PDBFile *Pdb);
+ InputFile(object::COFFObjectFile *Obj);
+ InputFile(MemoryBuffer *Buffer);
LLVM_ABI ~InputFile();
InputFile(InputFile &&Other) = default;
diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
index d797d00cfa123..a7e8e60af7160 100644
--- a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
+++ b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
@@ -10,6 +10,7 @@
#define LLVM_DEBUGINFO_PDB_PDBSYMBOLFUNC_H
#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h"
#include "llvm/Support/Compiler.h"
#include "PDBSymbol.h"
@@ -21,7 +22,6 @@ namespace pdb {
class PDBSymDumper;
class PDBSymbolData;
-class PDBSymbolTypeFunctionSig;
template <typename ChildType> class IPDBEnumChildren;
class LLVM_ABI PDBSymbolFunc : public PDBSymbol {
diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
index a054b0c02db83..d3bfa00ac9cde 100644
--- a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
+++ b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
@@ -20,6 +20,8 @@ namespace pdb {
class LLVM_ABI PDBSymbolTypeBuiltin : public PDBSymbol {
DECLARE_PDB_SYMBOL_CONCRETE_TYPE(PDB_SymType::BuiltinType)
public:
+
+ ~PDBSymbolTypeBuiltin();
void dump(PDBSymDumper &Dumper) const override;
FORWARD_SYMBOL_METHOD(getBuiltinType)
diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
index 431bf0dab90d9..acc58e10e71c7 100644
--- a/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
+++ b/llvm/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
@@ -11,9 +11,11 @@
#include "PDBSymbol.h"
#include "PDBTypes.h"
+#include "llvm/DebugInfo/PDB/IPDBLineNumber.h"
#include "llvm/Support/Compiler.h"
#include "llvm/DebugInfo/PDB/IPDBRawSymbol.h"
+#include "llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h"
namespace llvm {
diff --git a/llvm/include/llvm/MC/MCGOFFStreamer.h b/llvm/include/llvm/MC/MCGOFFStreamer.h
index 6d029f6bd4a29..8888d9e7bdbb3 100644
--- a/llvm/include/llvm/MC/MCGOFFStreamer.h
+++ b/llvm/include/llvm/MC/MCGOFFStreamer.h
@@ -20,9 +20,7 @@ class MCGOFFStreamer : public MCObjectStreamer {
public:
MCGOFFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> MAB,
std::unique_ptr<MCObjectWriter> OW,
- std::unique_ptr<MCCodeEmitter> Emitter)
- : MCObjectStreamer(Context, std::move(MAB), std::move(OW),
- std::move(Emitter)) {}
+ std::unique_ptr<MCCodeEmitter> Emitter);
~MCGOFFStreamer() override;
diff --git a/llvm/lib/DebugInfo/GSYM/GsymContext.cpp b/llvm/lib/DebugInfo/GSYM/GsymContext.cpp
index 18be6d0985462..62b4caa327d87 100644
--- a/llvm/lib/DebugInfo/GSYM/GsymContext.cpp
+++ b/llvm/lib/DebugInfo/GSYM/GsymContext.cpp
@@ -14,6 +14,7 @@
using namespace llvm;
using namespace llvm::gsym;
+GsymContext::~GsymContext() = default;
GsymContext::GsymContext(std::unique_ptr<GsymReader> Reader)
: DIContext(CK_GSYM), Reader(std::move(Reader)) {}
diff --git a/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp b/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
index 328d0f5ab060f..49be0edc33a10 100644
--- a/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
+++ b/llvm/lib/DebugInfo/PDB/Native/InputFile.cpp
@@ -586,3 +586,8 @@ bool llvm::pdb::shouldDumpSymbolGroup(uint32_t Idx, const SymbolGroup &Group,
// Otherwise, only dump if this is the same module specified.
return (Filters.DumpModi == Idx);
}
+llvm::pdb::InputFile::InputFile(PDBFile *Pdb) { PdbOrObj = Pdb; }
+
+llvm::pdb::InputFile::InputFile(object::COFFObjectFile *Obj) { PdbOrObj = Obj; }
+
+llvm::pdb::InputFile::InputFile(MemoryBuffer *Buffer) { PdbOrObj = Buffer; }
diff --git a/llvm/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp b/llvm/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp
index eca2a09c1f77b..1c121187c42a8 100644
--- a/llvm/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp
+++ b/llvm/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp
@@ -10,9 +10,18 @@
#include "llvm/DebugInfo/PDB/PDBSymDumper.h"
+namespace llvm {
+namespace pdb {
+
+PDBSymbolTypeBuiltin::~PDBSymbolTypeBuiltin() = default;
+
+} // namespace pdb
+} // namespace llvm
+
using namespace llvm;
using namespace llvm::pdb;
+
void PDBSymbolTypeBuiltin::dump(PDBSymDumper &Dumper) const {
Dumper.dump(*this);
}
diff --git a/llvm/lib/MC/MCGOFFStreamer.cpp b/llvm/lib/MC/MCGOFFStreamer.cpp
index 1718e2a4eb2d7..f164c2d7365a8 100644
--- a/llvm/lib/MC/MCGOFFStreamer.cpp
+++ b/llvm/lib/MC/MCGOFFStreamer.cpp
@@ -45,3 +45,10 @@ MCStreamer *llvm::createGOFFStreamer(MCContext &Context,
new MCGOFFStreamer(Context, std::move(MAB), std::move(OW), std::move(CE));
return S;
}
+llvm::MCGOFFStreamer::MCGOFFStreamer(MCContext &Context,
+ std::unique_ptr<MCAsmBackend> MAB,
+ std::unique_ptr<MCObjectWriter> OW,
+ std::unique_ptr<MCCodeEmitter> Emitter)
+ : MCObjectStreamer(Context, std::move(MAB), std::move(OW),
+ std::move(Emitter)) {}
+
diff --git a/llvm/lib/Remarks/BitstreamRemarkParser.cpp b/llvm/lib/Remarks/BitstreamRemarkParser.cpp
index 312886013598d..20a8ebbadc681 100644
--- a/llvm/lib/Remarks/BitstreamRemarkParser.cpp
+++ b/llvm/lib/Remarks/BitstreamRemarkParser.cpp
@@ -600,3 +600,5 @@ BitstreamRemarkParser::processRemark(BitstreamRemarkParserHelper &Helper) {
return std::move(Result);
}
+llvm::remarks::BitstreamRemarkParser::BitstreamRemarkParser(StringRef Buf)
+ : RemarkParser(Format::Bitstream), ParserHelper(Buf) {}
diff --git a/llvm/lib/Remarks/BitstreamRemarkParser.h b/llvm/lib/Remarks/BitstreamRemarkParser.h
index f6f79ef199f7e..061206471fee4 100644
--- a/llvm/lib/Remarks/BitstreamRemarkParser.h
+++ b/llvm/lib/Remarks/BitstreamRemarkParser.h
@@ -45,8 +45,7 @@ struct BitstreamRemarkParser : public RemarkParser {
/// Create a parser that expects to find a string table embedded in the
/// stream.
- explicit BitstreamRemarkParser(StringRef Buf)
- : RemarkParser(Format::Bitstream), ParserHelper(Buf) {}
+ explicit BitstreamRemarkParser(StringRef Buf);
Expected<std::unique_ptr<Remark>> next() override;
diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp
index 0c6add59cb282..5d23416b4610b 100644
--- a/llvm/lib/TableGen/TGParser.cpp
+++ b/llvm/lib/TableGen/TGParser.cpp
@@ -33,6 +33,13 @@ using namespace llvm;
namespace llvm {
+RecordsEntry::RecordsEntry(std::unique_ptr<Record> Rec) : Rec(std::move(Rec)) {}
+RecordsEntry::RecordsEntry(std::unique_ptr<ForeachLoop> Loop) : Loop(std::move(Loop)) {}
+RecordsEntry::RecordsEntry(std::unique_ptr<Record::AssertionInfo> Assertion)
+ : Assertion(std::move(Assertion)) {}
+RecordsEntry::RecordsEntry(std::unique_ptr<Record::DumpInfo> Dump)
+ : Dump(std::move(Dump)) {}
+
struct SubClassReference {
SMRange RefRange;
const Record *Rec = nullptr;
diff --git a/llvm/lib/TableGen/TGParser.h b/llvm/lib/TableGen/TGParser.h
index 7edb6c7a9aac6..09b7d5380695d 100644
--- a/llvm/lib/TableGen/TGParser.h
+++ b/llvm/lib/TableGen/TGParser.h
@@ -46,12 +46,10 @@ struct RecordsEntry {
void dump() const;
RecordsEntry() = default;
- RecordsEntry(std::unique_ptr<Record> Rec) : Rec(std::move(Rec)) {}
- RecordsEntry(std::unique_ptr<ForeachLoop> Loop) : Loop(std::move(Loop)) {}
- RecordsEntry(std::unique_ptr<Record::AssertionInfo> Assertion)
- : Assertion(std::move(Assertion)) {}
- RecordsEntry(std::unique_ptr<Record::DumpInfo> Dump)
- : Dump(std::move(Dump)) {}
+ RecordsEntry(std::unique_ptr<Record> Rec);
+ RecordsEntry(std::unique_ptr<ForeachLoop> Loop);
+ RecordsEntry(std::unique_ptr<Record::AssertionInfo> Assertion);
+ RecordsEntry(std::unique_ptr<Record::DumpInfo> Dump);
};
/// ForeachLoop - Record the iteration state associated with a for loop.
``````````
</details>
https://github.com/llvm/llvm-project/pull/154372
More information about the llvm-commits
mailing list