aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/OptRSTEmitter.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2022-07-03 14:10:23 +0000
committerDimitry Andric <dim@FreeBSD.org>2022-07-03 14:10:23 +0000
commit145449b1e420787bb99721a429341fa6be3adfb6 (patch)
tree1d56ae694a6de602e348dd80165cf881a36600ed /llvm/utils/TableGen/OptRSTEmitter.cpp
parentecbca9f5fb7d7613d2b94982c4825eb0d33d6842 (diff)
Diffstat (limited to 'llvm/utils/TableGen/OptRSTEmitter.cpp')
-rw-r--r--llvm/utils/TableGen/OptRSTEmitter.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/llvm/utils/TableGen/OptRSTEmitter.cpp b/llvm/utils/TableGen/OptRSTEmitter.cpp
index 11d896229f5b..03c7326e817a 100644
--- a/llvm/utils/TableGen/OptRSTEmitter.cpp
+++ b/llvm/utils/TableGen/OptRSTEmitter.cpp
@@ -60,18 +60,43 @@ void EmitOptRST(RecordKeeper &Records, raw_ostream &OS) {
// Print the option name.
OS << R->getValueAsString("Name");
+ StringRef MetaVarName;
// Print the meta-variable.
if (!isa<UnsetInit>(R->getValueInit("MetaVarName"))) {
+ MetaVarName = R->getValueAsString("MetaVarName");
+ } else if (!isa<UnsetInit>(R->getValueInit("Values")))
+ MetaVarName = "<value>";
+
+ if (!MetaVarName.empty()) {
OS << '=';
- OS.write_escaped(R->getValueAsString("MetaVarName"));
+ OS.write_escaped(MetaVarName);
}
OS << "\n\n";
+ std::string HelpText;
// The option help text.
if (!isa<UnsetInit>(R->getValueInit("HelpText"))) {
+ HelpText = R->getValueAsString("HelpText").trim().str();
+ if (!HelpText.empty() && HelpText.back() != '.')
+ HelpText.push_back('.');
+ }
+
+ if (!isa<UnsetInit>(R->getValueInit("Values"))) {
+ SmallVector<StringRef> Values;
+ SplitString(R->getValueAsString("Values"), Values, ",");
+ HelpText += (" " + MetaVarName + " must be '").str();
+
+ if (Values.size() > 1) {
+ HelpText += join(Values.begin(), Values.end() - 1, "', '");
+ HelpText += "' or '";
+ }
+ HelpText += (Values.front() + "'.").str();
+ }
+
+ if (!HelpText.empty()) {
OS << ' ';
- OS.write_escaped(R->getValueAsString("HelpText"));
+ OS.write_escaped(HelpText);
OS << "\n\n";
}
}