Defining a new API for debug options that doesn't rely on static global cl::opts.

Summary:
This is based on the discussions from the LLVMDev thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-August/075886.html

Reviewers: chandlerc

Reviewed By: chandlerc

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5389

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219854 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Bieneman
2014-10-15 21:54:35 +00:00
parent d3fc10a525
commit c14fb89680
7 changed files with 193 additions and 12 deletions

View 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();
}