+ map<string, Option*>::iterator I = getOpts().find(RealName);
+
+ if (I == getOpts().end() && !*Value && RealName.size() > 1) {
+ // If grouping of single letter arguments is enabled, see if this is a
+ // legal grouping...
+ //
+ if (!(Flags & DisableSingleLetterArgGrouping) &&
+ ValidGroupedArgs(RealName)) {
+
+ for (unsigned i = 0; i < RealName.size(); ++i) {
+ char ArgName[2] = { 0, 0 }; int Dummy;
+ ArgName[0] = RealName[i];
+ I = getOpts().find(ArgName);
+ assert(I != getOpts().end() && "ValidGroupedArgs failed!");
+
+ // Because ValueRequired is an invalid flag for grouped arguments,
+ // we don't need to pass argc/argv in...
+ //
+ ErrorParsing |= ProvideOption(I->second, ArgName, "",
+ 0, 0, Dummy);
+ }
+ continue;
+ } else if (Flags & EnableSingleLetterArgValue) {
+ // Check to see if the first letter is a single letter argument that
+ // have a value that is equal to the rest of the string. If this
+ // is the case, recognize it now. (Example: -lfoo for a linker)
+ //
+ I = getOpts().find(string(1, RealName[0]));
+ if (I != getOpts().end()) {
+ // If we are successful, fall through to later processing, by
+ // setting up the argument name flags and value fields.
+ //
+ ArgNameEnd = ArgName+1;
+ Value = ArgNameEnd;
+ }
+ }
+ }
+
+