Add 'hidden' and 'really_hidden' option properties.
authorMikhail Glushenkov <foldr@codedgers.com>
Fri, 28 Nov 2008 00:13:25 +0000 (00:13 +0000)
committerMikhail Glushenkov <foldr@codedgers.com>
Fri, 28 Nov 2008 00:13:25 +0000 (00:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60198 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CompilerDriver/Common.td
tools/llvmc/doc/LLVMC-Reference.rst
utils/TableGen/LLVMCConfigurationEmitter.cpp

index 4589f9179c326a45faa03c946fa98a5b564b1822..109a7e5eda1286614f9dff9b7810bf7b2fa9808d 100644 (file)
@@ -38,10 +38,12 @@ def prefix_list_option;
 def append_cmd;
 def forward;
 def forward_as;
-def stop_compilation;
-def unpack_values;
 def help;
+def hidden;
+def really_hidden;
 def required;
+def stop_compilation;
+def unpack_values;
 
 // Empty DAG marker.
 def empty;
index 290778468a02df192d0f56d9ecc9eabda5496844..919025527b52458fc5834e4fb726a1cb77a12965 100644 (file)
@@ -353,6 +353,12 @@ currently implemented option types and properties are described below:
 
    - ``required`` - this option is obligatory.
 
+   - ``hidden`` - this option should not appear in the ``--help``
+     output (but should appear in the ``--help-hidden`` output).
+
+   - ``really_hidden`` - the option should not appear in any help
+     output.
+
 
 Option list - specifying all options in a single place
 ======================================================
index da4ed78a24cbf8ffc61feddb7769b247d02732ba..668282a91a9a07a007c0cce037f55983731ba9d3 100644 (file)
@@ -198,7 +198,8 @@ struct OptionDescription {
 // Global option description.
 
 namespace GlobalOptionDescriptionFlags {
-  enum GlobalOptionDescriptionFlags { Required = 0x1 };
+  enum GlobalOptionDescriptionFlags { Required = 0x1, Hidden = 0x2,
+                                      ReallyHidden = 0x4 };
 }
 
 struct GlobalOptionDescription : public OptionDescription {
@@ -222,6 +223,20 @@ struct GlobalOptionDescription : public OptionDescription {
     Flags |= GlobalOptionDescriptionFlags::Required;
   }
 
+  bool isHidden() const {
+    return Flags & GlobalOptionDescriptionFlags::Hidden;
+  }
+  void setHidden() {
+    Flags |= GlobalOptionDescriptionFlags::Hidden;
+  }
+
+  bool isReallyHidden() const {
+    return Flags & GlobalOptionDescriptionFlags::ReallyHidden;
+  }
+  void setReallyHidden() {
+    Flags |= GlobalOptionDescriptionFlags::ReallyHidden;
+  }
+
   /// Merge - Merge two option descriptions.
   void Merge (const GlobalOptionDescription& other)
   {
@@ -412,8 +427,12 @@ public:
         &CollectOptionProperties::onForwardAs;
       optionPropertyHandlers_["help"] =
         &CollectOptionProperties::onHelp;
+      optionPropertyHandlers_["hidden"] =
+        &CollectOptionProperties::onHidden;
       optionPropertyHandlers_["output_suffix"] =
         &CollectOptionProperties::onOutputSuffix;
+      optionPropertyHandlers_["really_hidden"] =
+        &CollectOptionProperties::onReallyHidden;
       optionPropertyHandlers_["required"] =
         &CollectOptionProperties::onRequired;
       optionPropertyHandlers_["stop_compilation"] =
@@ -493,6 +512,18 @@ private:
     optDesc_.Help = help_message;
   }
 
+  void onHidden (const DagInit* d) {
+    checkNumberOfArguments(d, 0);
+    checkToolProps(d);
+    optDesc_.setHidden();
+  }
+
+  void onReallyHidden (const DagInit* d) {
+    checkNumberOfArguments(d, 0);
+    checkToolProps(d);
+    optDesc_.setReallyHidden();
+  }
+
   void onRequired (const DagInit* d) {
     checkNumberOfArguments(d, 0);
     checkToolProps(d);
@@ -1413,6 +1444,17 @@ void EmitOptionDescriptions (const GlobalOptionDescriptions& descs,
       }
     }
 
+    if (val.isReallyHidden() || val.isHidden()) {
+      if (val.isRequired())
+        O << " |";
+      else
+        O << ",";
+      if (val.isReallyHidden())
+        O << " cl::ReallyHidden";
+      else
+        O << " cl::Hidden";
+    }
+
     if (!val.Help.empty())
       O << ", cl::desc(\"" << val.Help << "\")";