[FIX] Remove pointer in attribute to eliminate leaks (see D71830)
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index fa5b43d..29abb9c 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -12612,10 +12612,10 @@
C->setKindKwLoc(Record.readSourceLocation());
}
-OMPTraitInfo *ASTRecordReader::readOMPTraitInfo() {
- OMPTraitInfo *TI = new OMPTraitInfo();
- TI->Sets.resize(readUInt32());
- for (auto &Set : TI->Sets) {
+OMPTraitInfo ASTRecordReader::readOMPTraitInfo() {
+ OMPTraitInfo TI;
+ TI.Sets.resize(readUInt32());
+ for (auto &Set : TI.Sets) {
Set.Kind = readEnum<llvm::omp::TraitSet>();
Set.Selectors.resize(readUInt32());
for (auto &Selector : Set.Selectors) {
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp
index 45c10be..091bf56 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -2756,7 +2756,7 @@
return Reader.readVersionTuple();
}
- OMPTraitInfo *readOMPTraitInfo() { return Reader.readOMPTraitInfo(); }
+ OMPTraitInfo readOMPTraitInfo() { return Reader.readOMPTraitInfo(); }
template <typename T> T *GetLocalDeclAs(uint32_t LocalID) {
return Reader.GetLocalDeclAs<T>(LocalID);
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 4ee59f7..159ebe1 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -6578,9 +6578,9 @@
Record.AddSourceLocation(C->getKindKwLoc());
}
-void ASTRecordWriter::writeOMPTraitInfo(OMPTraitInfo *TI) {
- writeUInt32(TI->Sets.size());
- for (const auto &Set : TI->Sets) {
+void ASTRecordWriter::writeOMPTraitInfo(const OMPTraitInfo &TI) {
+ writeUInt32(TI.Sets.size());
+ for (const auto &Set : TI.Sets) {
writeEnum(Set.Kind);
writeUInt32(Set.Selectors.size());
for (const auto &Selector : Set.Selectors) {