xref: /aosp_15_r20/external/llvm/lib/Support/Options.cpp (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===- llvm/Support/Options.cpp - Debug options support ---------*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker // This file implements the helper objects for defining debug options using the
11*9880d681SAndroid Build Coastguard Worker // new API built on cl::opt, but not requiring the use of static globals.
12*9880d681SAndroid Build Coastguard Worker //
13*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
14*9880d681SAndroid Build Coastguard Worker 
15*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/Options.h"
16*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/ManagedStatic.h"
17*9880d681SAndroid Build Coastguard Worker 
18*9880d681SAndroid Build Coastguard Worker using namespace llvm;
19*9880d681SAndroid Build Coastguard Worker 
~OptionRegistry()20*9880d681SAndroid Build Coastguard Worker OptionRegistry::~OptionRegistry() {
21*9880d681SAndroid Build Coastguard Worker   for (auto IT = Options.begin(); IT != Options.end(); ++IT)
22*9880d681SAndroid Build Coastguard Worker     delete IT->second;
23*9880d681SAndroid Build Coastguard Worker }
24*9880d681SAndroid Build Coastguard Worker 
addOption(void * Key,cl::Option * O)25*9880d681SAndroid Build Coastguard Worker void OptionRegistry::addOption(void *Key, cl::Option *O) {
26*9880d681SAndroid Build Coastguard Worker   assert(Options.find(Key) == Options.end() &&
27*9880d681SAndroid Build Coastguard Worker          "Argument with this key already registerd");
28*9880d681SAndroid Build Coastguard Worker   Options.insert(std::make_pair(Key, O));
29*9880d681SAndroid Build Coastguard Worker }
30*9880d681SAndroid Build Coastguard Worker 
31*9880d681SAndroid Build Coastguard Worker static ManagedStatic<OptionRegistry> OR;
32*9880d681SAndroid Build Coastguard Worker 
instance()33*9880d681SAndroid Build Coastguard Worker OptionRegistry &OptionRegistry::instance() { return *OR; }
34