Driver: Add Option flags.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66067 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Driver/OptTable.cpp b/lib/Driver/OptTable.cpp
index 7313348..335d772 100644
--- a/lib/Driver/OptTable.cpp
+++ b/lib/Driver/OptTable.cpp
@@ -95,21 +95,14 @@
     Opt = new JoinedAndSeparateOption(info.Name, Group, Alias); break;
   }
 
-  // FIXME: Set flags.
   for (const char *s = info.Flags; *s; ++s) {
     switch (*s) {
-    default:
-      assert(0 && "Invalid option flag.");
-    case 'l':
-      break;
-    case 'i':
-      break;
-    case 'J':
-      break;
-    case 'S':
-      break;
-    case 'U':
-      break;
+    default: assert(0 && "Invalid option flag.");
+    case 'l': Opt->setLinkerInput(true); break;
+    case 'i': Opt->setNoOptAsInput(true); break;
+    case 'J': Opt->setForceJoinedRender(true); break;
+    case 'S': Opt->setForceSeparateRender(true); break;
+    case 'U': Opt->setUnsupported(true); break;
     }
   }
 
diff --git a/lib/Driver/Option.cpp b/lib/Driver/Option.cpp
index cf5c3eb..368f004 100644
--- a/lib/Driver/Option.cpp
+++ b/lib/Driver/Option.cpp
@@ -15,7 +15,10 @@
 
 Option::Option(OptionClass _Kind, const char *_Name,
                const OptionGroup *_Group, const Option *_Alias) 
-  : Kind(_Kind), Name(_Name), Group(_Group), Alias(_Alias) {
+  : Kind(_Kind), Name(_Name), Group(_Group), Alias(_Alias),
+    Unsupported(false), LinkerInput(false), NoOptAsInput(false),
+    ForceSeparateRender(false), ForceJoinedRender(false)
+{
 
   // Multi-level aliases are not supported, and alias options cannot
   // have groups. This just simplifies option tracking, it is not an