Defining a new API for debug options that doesn't rely on static global cl::opts.
[oota-llvm.git] / lib / Support / CommandLine.cpp
index 2c5174dc7d3fa09ae858db967392109191b104b1..9d5f158072427321cde17b2e718bf4496b16ee0c 100644 (file)
@@ -113,9 +113,15 @@ void Option::addArgument() {
 }
 
 void Option::removeArgument() {
-  assert(NextRegistered && "argument never registered");
-  assert(RegisteredOptionList == this && "argument is not the last registered");
-  RegisteredOptionList = NextRegistered;
+  if (RegisteredOptionList == this) {
+    RegisteredOptionList = NextRegistered;
+    MarkOptionsChanged();
+    return;
+  }
+  Option *O = RegisteredOptionList;
+  for (; O->NextRegistered != this; O = O->NextRegistered)
+    ;
+  O->NextRegistered = NextRegistered;
   MarkOptionsChanged();
 }