1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00

Fix a bug in my earlier commit which exposed positional options backwards.

This fixes llvm-ar.

llvm-svn: 35727
This commit is contained in:
Chris Lattner 2007-04-07 05:38:53 +00:00
parent 41bf50021d
commit c1bce783e8

View File

@ -91,6 +91,7 @@ void Option::addArgument() {
static void GetOptionInfo(std::vector<Option*> &PositionalOpts,
std::map<std::string, Option*> &OptionsMap) {
std::vector<const char*> OptionNames;
Option *CAOpt = 0; // The ConsumeAfter option if it exists.
for (Option *O = RegisteredOptionList; O; O = O->getNextRegisteredOption()) {
// If this option wants to handle multiple option names, get the full set.
// This handles enum options like "-O1 -O2" etc.
@ -114,12 +115,17 @@ static void GetOptionInfo(std::vector<Option*> &PositionalOpts,
if (O->getFormattingFlag() == cl::Positional)
PositionalOpts.push_back(O);
else if (O->getNumOccurrencesFlag() == cl::ConsumeAfter) {
if (!PositionalOpts.empty() &&
PositionalOpts.front()->getNumOccurrencesFlag() == cl::ConsumeAfter)
if (CAOpt)
O->error("Cannot specify more than one option with cl::ConsumeAfter!");
PositionalOpts.insert(PositionalOpts.begin(), O);
CAOpt = O;
}
}
if (CAOpt)
PositionalOpts.push_back(CAOpt);
// Make sure that they are in order of registration not backwards.
std::reverse(PositionalOpts.begin(), PositionalOpts.end());
}