14#include "llvm/Config/llvm-config.h"
36 for (
Option O =
A->getOption().getUnaliasedOption(); O.isValid();
39 OptRanges.
insert(std::make_pair(O.getID(), emptyRange())).first->second;
40 R.first = std::min<unsigned>(R.first, Args.
size() - 1);
41 R.second = Args.
size();
51 ArgsBegin[&
A - ArgsBegin] =
nullptr;
53 OptRanges.
erase(Id.getID());
57ArgList::getRange(std::initializer_list<OptSpecifier> Ids)
const {
58 OptRange R = emptyRange();
60 auto I = OptRanges.
find(Id.getID());
61 if (
I != OptRanges.
end()) {
62 R.first = std::min(R.first,
I->second.first);
63 R.second = std::max(R.second,
I->second.second);
74 return A->getOption().matches(Pos);
81 return A->getOption().matches(Pos);
88 return A->getOption().matches(Pos) ||
A->getOption().matches(PosAlias);
101 return std::vector<std::string>(Values.
begin(), Values.
end());
107 if (
A->getOption().matches(Pos))
108 A->render(*
this, Output);
114 for (
const Arg *
Arg : *
this) {
115 bool Excluded =
false;
156 Output.
append(Values.begin(), Values.end());
161 const char *Translation,
182 for (
auto *
Arg : *
this)
199 for (
Arg *
A : *
this) {
205#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
209void InputArgList::releaseMemory() {
216 const char*
const *ArgEnd)
217 : NumInputArgStrings(ArgEnd - ArgBegin) {
218 ArgStrings.
append(ArgBegin, ArgEnd);
225 SynthesizedStrings.push_back(std::string(String0));
226 ArgStrings.
push_back(SynthesizedStrings.back().c_str());
235 assert(Index0 + 1 == Index1 &&
"Unexpected non-consecutive indices!");
245 : BaseArgs(BaseArgs) {}
252 SynthesizedArgs.push_back(std::unique_ptr<Arg>(
A));
256 SynthesizedArgs.push_back(
259 return SynthesizedArgs.back().get();
265 SynthesizedArgs.push_back(
268 return SynthesizedArgs.back().get();
274 SynthesizedArgs.push_back(
277 return SynthesizedArgs.back().get();
283 SynthesizedArgs.push_back(std::make_unique<Arg>(
286 return SynthesizedArgs.back().get();
Defines the llvm::Arg class for parsed arguments.
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
iterator find(const_arg_type_t< KeyT > Val)
bool erase(const KeyT &Val)
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
void append(ItTy in_start, ItTy in_end)
Add the specified range to the end of the SmallVector.
void push_back(const T &Elt)
pointer data()
Return a pointer to the vector's buffer, even if empty().
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
constexpr size_t size() const
size - Get the string size.
bool startswith(StringRef Prefix) const
bool endswith(StringRef Suffix) const
const char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
LLVM Value Representation.
void eraseArg(OptSpecifier Id)
eraseArg - Remove any option matching Id.
virtual const char * getArgString(unsigned Index) const =0
getArgString - Return the input argument string at Index.
void AddAllArgValues(ArgStringList &Output, OptSpecifier Id0, OptSpecifier Id1=0U, OptSpecifier Id2=0U) const
AddAllArgValues - Render the argument values of all arguments matching the given ids.
Arg * getLastArgNoClaim(OptSpecifiers ...Ids) const
Return the last argument matching Id, or null.
void print(raw_ostream &O) const
const char * GetOrMakeJoinedArgString(unsigned Index, StringRef LHS, StringRef RHS) const
Create an arg string for (LHS + RHS), reusing the string at Index if possible.
void addOptInFlag(ArgStringList &Output, OptSpecifier Pos, OptSpecifier Neg) const
Given an option Pos and its negative form Neg, render the option if Pos is present.
bool hasFlagNoClaim(OptSpecifier Pos, OptSpecifier Neg, bool Default) const
void AddAllArgsTranslated(ArgStringList &Output, OptSpecifier Id0, const char *Translation, bool Joined=false) const
AddAllArgsTranslated - Render all the arguments matching the given ids, but forced to separate args a...
const char * MakeArgString(const Twine &Str) const
void append(Arg *A)
append - Append A to the arg list.
void ClaimAllArgs() const
ClaimAllArgs - Claim all arguments.
Arg * getLastArg(OptSpecifiers ...Ids) const
Return the last argument matching Id, or null.
void AddAllArgsExcept(ArgStringList &Output, ArrayRef< OptSpecifier > Ids, ArrayRef< OptSpecifier > ExcludeIds) const
AddAllArgsExcept - Render all arguments matching any of the given ids and not matching any of the exc...
std::vector< std::string > getAllArgValues(OptSpecifier Id) const
getAllArgValues - Get the values of all instances of the given argument as strings.
StringRef getLastArgValue(OptSpecifier Id, StringRef Default="") const
getLastArgValue - Return the value of the last argument, or a default.
iterator_range< filtered_iterator< sizeof...(OptSpecifiers)> > filtered(OptSpecifiers ...Ids) const
void AddAllArgs(ArgStringList &Output, ArrayRef< OptSpecifier > Ids) const
AddAllArgs - Render all arguments matching any of the given ids.
bool hasFlag(OptSpecifier Pos, OptSpecifier Neg, bool Default) const
hasFlag - Given an option Pos and its negative form Neg, return true if the option is present,...
A concrete instance of a particular driver option.
void render(const ArgList &Args, ArgStringList &Output) const
Append the argument onto the given array as strings.
SmallVectorImpl< const char * > & getValues()
const Option & getOption() const
const char * getValue(unsigned N=0) const
const char * MakeArgStringRef(StringRef Str) const override
Construct a constant string pointer whose lifetime will match that of the ArgList.
Arg * MakeSeparateArg(const Arg *BaseArg, const Option Opt, StringRef Value) const
MakeSeparateArg - Construct a new Positional arg for the given option Id, with the provided Value.
void AddSynthesizedArg(Arg *A)
AddSynthesizedArg - Add a argument to the list of synthesized arguments (to be freed).
Arg * MakeJoinedArg(const Arg *BaseArg, const Option Opt, StringRef Value) const
MakeJoinedArg - Construct a new Positional arg for the given option Id, with the provided Value.
DerivedArgList(const InputArgList &BaseArgs)
Construct a new derived arg list from BaseArgs.
const char * MakeArgString(const Twine &Str) const
Arg * MakePositionalArg(const Arg *BaseArg, const Option Opt, StringRef Value) const
MakePositionalArg - Construct a new Positional arg for the given option Id, with the provided Value.
Arg * MakeFlagArg(const Arg *BaseArg, const Option Opt) const
MakeFlagArg - Construct a new FlagArg for the given option Id.
OptSpecifier - Wrapper class for abstracting references to option IDs.
Option - Abstract representation for a single form of driver argument.
bool matches(OptSpecifier ID) const
matches - Predicate for whether this option is part of the given option (which may be a group).
StringRef getPrefix() const
Get the default prefix for this option.
StringRef getName() const
Get the name of this option without any prefix.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
@ Default
The result values are uniform if and only if all operands are uniform.