16 #include "llvm/Config/llvm-config.h" 41 OptRanges.
insert(std::make_pair(
O.getID(), emptyRange())).first->second;
42 R.first = std::min<unsigned>(R.first, Args.
size() - 1);
43 R.second = Args.
size();
53 ArgsBegin[&A - ArgsBegin] =
nullptr;
59 ArgList::getRange(std::initializer_list<OptSpecifier> Ids)
const {
60 OptRange R = emptyRange();
62 auto I = OptRanges.
find(
Id.getID());
63 if (
I != OptRanges.
end()) {
64 R.first = std::min(R.first,
I->second.first);
65 R.second =
std::max(R.second,
I->second.second);
76 return A->getOption().matches(Pos);
83 return A->getOption().matches(Pos) || A->getOption().matches(PosAlias);
96 return std::vector<std::string>(Values.
begin(), Values.
end());
102 A->render(*
this, Output);
110 A->render(*
this, Output);
117 for (
const Arg *
Arg : *
this) {
118 bool Excluded =
false;
129 Arg->
render(*
this, Output);
159 Output.
append(Values.begin(), Values.end());
164 const char *Translation,
185 for (
auto *
Arg : *
this)
202 for (
Arg *A : *
this) {
208 #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 212 void InputArgList::releaseMemory() {
219 const char*
const *ArgEnd)
220 : NumInputArgStrings(ArgEnd - ArgBegin) {
221 ArgStrings.
append(ArgBegin, ArgEnd);
228 SynthesizedStrings.push_back(String0);
229 ArgStrings.
push_back(SynthesizedStrings.back().c_str());
238 assert(Index0 + 1 == Index1 &&
"Unexpected non-consecutive indices!");
248 : BaseArgs(BaseArgs) {}
255 SynthesizedArgs.push_back(std::unique_ptr<Arg>(A));
259 SynthesizedArgs.push_back(
262 return SynthesizedArgs.back().get();
268 SynthesizedArgs.push_back(
271 return SynthesizedArgs.back().get();
277 SynthesizedArgs.push_back(
280 return SynthesizedArgs.back().get();
286 SynthesizedArgs.push_back(make_unique<Arg>(
289 return SynthesizedArgs.back().get();
void AddLastArg(ArgStringList &Output, OptSpecifier Id0) const
AddLastArg - Render only the last argument match Id0, if present.
GCNRegPressure max(const GCNRegPressure &P1, const GCNRegPressure &P2)
StringRef getPrefix() const
Get the default prefix for this option.
This class represents lattice values for constants.
void print(raw_ostream &O) const
const Option getUnaliasedOption() const
getUnaliasedOption - Return the final option this option aliases (itself, if the option has no alias)...
void push_back(const T &Elt)
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE size_t size() const
size - Get the string size.
iterator_range< filtered_iterator< sizeof...(OptSpecifiers)> > filtered(OptSpecifiers ...Ids) const
void eraseArg(OptSpecifier Id)
eraseArg - Remove any option matching Id.
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE const char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
std::pair< iterator, bool > insert(const std::pair< KeyT, ValueT > &KV)
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE bool endswith(StringRef Suffix) const
Check if this string ends with the given Suffix.
const Option & getOption() const
Arg * MakeFlagArg(const Arg *BaseArg, const Option Opt) const
MakeFlagArg - Construct a new FlagArg for the given option Id.
SmallVectorImpl< const char * > & getValues()
LLVM_NODISCARD LLVM_ATTRIBUTE_ALWAYS_INLINE bool startswith(StringRef Prefix) const
Check if this string starts with the given Prefix.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
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...
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...
iterator find(const_arg_type_t< KeyT > Val)
void AddSynthesizedArg(Arg *A)
AddSynthesizedArg - Add a argument to the list of synthesized arguments (to be freed).
bool erase(const KeyT &Val)
const char * MakeArgStringRef(StringRef Str) const override
Construct a constant string pointer whose lifetime will match that of the ArgList.
Option - Abstract representation for a single form of driver argument.
StringRef getName() const
Get the name of this option without any prefix.
bool matches(OptSpecifier ID) const
matches - Predicate for whether this option is part of the given option (which may be a group)...
void AddAllArgs(ArgStringList &Output, ArrayRef< OptSpecifier > Ids) const
AddAllArgs - Render all arguments matching any of the given ids.
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...
A concrete instance of a particular driver option.
bool hasFlag(OptSpecifier Pos, OptSpecifier Neg, bool Default=true) const
hasFlag - Given an option Pos and its negative form Neg, return true if the option is present...
DerivedArgList(const InputArgList &BaseArgs)
Construct a new derived arg list from BaseArgs.
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator begin()
const char * MakeArgString(const Twine &Str) 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.
Arg * getLastArg(OptSpecifiers ...Ids) const
Return the last argument matching Id, or null.
void claim() const
Set the Arg claimed bit.
virtual const char * getArgString(unsigned Index) const =0
getArgString - Return the input argument string at Index.
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...
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
Defines the llvm::Arg class for parsed arguments.
std::vector< std::string > getAllArgValues(OptSpecifier Id) const
getAllArgValues - Get the values of all instances of the given argument as strings.
void append(in_iter in_start, in_iter in_end)
Add the specified range to the end of the SmallVector.
StringRef getLastArgValue(OptSpecifier Id, StringRef Default="") const
getLastArgValue - Return the value of the last argument, or a default.
void append(Arg *A)
append - Append A to the arg list.
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator end()
OptSpecifier - Wrapper class for abstracting references to option IDs.
pointer data()
Return a pointer to the vector's buffer, even if empty().
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...
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.
void render(const ArgList &Args, ArgStringList &Output) const
Append the argument onto the given array as strings.
void ClaimAllArgs() const
ClaimAllArgs - Claim all arguments.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream...
StringRef - Represent a constant reference to a string, i.e.
const char * getValue(unsigned N=0) const
void print(raw_ostream &O) const