[FIX] Remove pointer in attribute to eliminate leaks (see D71830)
diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp
index e1bcbdb..8c822ec 100644
--- a/clang/lib/Parse/ParseOpenMP.cpp
+++ b/clang/lib/Parse/ParseOpenMP.cpp
@@ -1365,26 +1365,24 @@
}
// Parse inner context selectors.
- OMPTraitInfo *TI = new OMPTraitInfo();
- parseOMPContextSelectors(Loc, *TI);
+ OMPTraitInfo TI;
+ parseOMPContextSelectors(Loc, TI);
// Parse ')'
(void)T.consumeClose();
Optional<std::pair<FunctionDecl *, Expr *>> DeclVarData =
Actions.checkOpenMPDeclareVariantFunction(
- Ptr, AssociatedFunction.get(), *TI,
+ Ptr, AssociatedFunction.get(), TI,
SourceRange(Loc, Tok.getLocation()));
// Skip last tokens.
while (Tok.isNot(tok::annot_pragma_openmp_end))
ConsumeAnyToken();
- if (DeclVarData.hasValue() && !TI->Sets.empty())
+ if (DeclVarData.hasValue() && !TI.Sets.empty())
Actions.ActOnOpenMPDeclareVariantDirective(
DeclVarData.getValue().first, DeclVarData.getValue().second, TI,
SourceRange(Loc, Tok.getLocation()));
- else
- delete TI;
// Skip the last annot_pragma_openmp_end.
(void)ConsumeAnnotationToken();