mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Option: Propagate flags from groups to options in each group
This should make it easy to set a flag for a whole group of clang driver options. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212865 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f7d3052fc7
commit
e2729b9a98
@ -75,6 +75,7 @@ class OptionGroup<string name> {
|
||||
string Name = name;
|
||||
string HelpText = ?;
|
||||
OptionGroup Group = ?;
|
||||
list<OptionFlag> Flags = [];
|
||||
}
|
||||
|
||||
// Define the option class.
|
||||
|
@ -221,9 +221,11 @@ void EmitOptParser(RecordKeeper &Records, raw_ostream &OS) {
|
||||
|
||||
// The containing option group (if any).
|
||||
OS << ", ";
|
||||
if (const DefInit *DI = dyn_cast<DefInit>(R.getValueInit("Group")))
|
||||
const ListInit *GroupFlags = nullptr;
|
||||
if (const DefInit *DI = dyn_cast<DefInit>(R.getValueInit("Group"))) {
|
||||
GroupFlags = DI->getDef()->getValueAsListInit("Flags");
|
||||
OS << getOptionName(*DI->getDef());
|
||||
else
|
||||
} else
|
||||
OS << "INVALID";
|
||||
|
||||
// The option alias (if any).
|
||||
@ -249,17 +251,19 @@ void EmitOptParser(RecordKeeper &Records, raw_ostream &OS) {
|
||||
}
|
||||
|
||||
// The option flags.
|
||||
OS << ", ";
|
||||
int NumFlags = 0;
|
||||
const ListInit *LI = R.getValueAsListInit("Flags");
|
||||
if (LI->empty()) {
|
||||
OS << ", 0";
|
||||
} else {
|
||||
OS << ", ";
|
||||
for (unsigned i = 0, e = LI->size(); i != e; ++i) {
|
||||
if (i)
|
||||
OS << " | ";
|
||||
OS << cast<DefInit>(LI->getElement(i))->getDef()->getName();
|
||||
}
|
||||
for (Init *I : *LI)
|
||||
OS << (NumFlags++ ? " | " : "")
|
||||
<< cast<DefInit>(I)->getDef()->getName();
|
||||
if (GroupFlags) {
|
||||
for (Init *I : *GroupFlags)
|
||||
OS << (NumFlags++ ? " | " : "")
|
||||
<< cast<DefInit>(I)->getDef()->getName();
|
||||
}
|
||||
if (NumFlags == 0)
|
||||
OS << '0';
|
||||
|
||||
// The option parameter field.
|
||||
OS << ", " << R.getValueAsInt("NumArgs");
|
||||
|
Loading…
Reference in New Issue
Block a user