[clang] [llvm] [Frontend] Add leaf constructs and association to OpenMP/ACC directives (PR #83625)
Alexey Bataev via cfe-commits
cfe-commits at lists.llvm.org
Sun Mar 3 17:36:48 PST 2024
================
@@ -435,6 +450,213 @@ static void GenerateIsAllowedClause(const DirectiveLanguage &DirLang,
OS << "}\n"; // End of function isAllowedClauseForDirective
}
+// Generate the getLeafConstructs function implementation.
+static void GenerateGetLeafConstructs(const DirectiveLanguage &DirLang,
+ raw_ostream &OS) {
+ auto getQualifiedName = [&](StringRef Formatted) -> std::string {
+ return (llvm::Twine("llvm::") + DirLang.getCppNamespace() +
+ "::Directive::" + DirLang.getDirectivePrefix() + Formatted)
+ .str();
+ };
+
+ // For each list of leafs, generate a static local object, then
+ // return a reference to that object for a given directive, e.g.
+ //
+ // static ListTy leafConstructs_A_B = { A, B };
----------------
alexey-bataev wrote:
Looks like this approach breaks https://llvm.org/docs/CodingStandards.html#do-not-use-static-constructors. Better to avoid static SmallVectors (IIUC you're creating static SmallVector vars here) and use POD instead to avoid use of static constructors/destructors.
https://github.com/llvm/llvm-project/pull/83625
More information about the cfe-commits
mailing list