diff options
author | Jim Laskey <jlaskey@mac.com> | 2005-09-02 19:27:43 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2005-09-02 19:27:43 +0000 |
commit | 839615a510c582ddcdb09a8e2934f30775daa032 (patch) | |
tree | 0d786bf6025547449366b6acec24caa490868817 /lib/Target/SubtargetFeature.cpp | |
parent | 6621e3b9636174886c9665b648f2ddc13effbc8a (diff) |
Add help support for -mcpu and -mattr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23222 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SubtargetFeature.cpp')
-rw-r--r-- | lib/Target/SubtargetFeature.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/Target/SubtargetFeature.cpp b/lib/Target/SubtargetFeature.cpp index 1583f4e43b..bcb8f751aa 100644 --- a/lib/Target/SubtargetFeature.cpp +++ b/lib/Target/SubtargetFeature.cpp @@ -99,6 +99,29 @@ SubtargetFeatures::Find(const std::string &S, return F; } +/// Display help for feature choices. +void SubtargetFeatures::Help(const char *Heading, + const SubtargetFeatureKV *Table, size_t TableSize) { + // Determine the length of the longest key + size_t MaxLen = 0; + for (size_t i = 0; i < TableSize; i++) + MaxLen = std::max(MaxLen, std::strlen(Table[i].Key)); + // Print heading + std::cerr << "Help for " << Heading << " choices\n\n"; + // For each feature + for (size_t i = 0; i < TableSize; i++) { + // Compute required padding + size_t Pad = MaxLen - std::strlen(Table[i].Key) + 1; + // Print details + std::cerr << Table[i].Key << std::string(Pad, ' ') << " - " + << Table[i].Desc << "\n"; + } + // Wrap it up + std::cerr << "\n\n"; + // Leave tool + exit(1); +} + /// Parse feature string for quick usage. uint32_t SubtargetFeatures::Parse(const std::string &String, const std::string &DefaultCPU, @@ -124,6 +147,8 @@ uint32_t SubtargetFeatures::Parse(const std::string &String, Split(Features, String); // Check if default is needed if (Features[0].empty()) Features[0] = DefaultCPU; + // Check for help + if (Features[0] == "help") Help("CPU", CPUTable, CPUTableSize); // Find CPU entry const SubtargetFeatureKV *CPUEntry = Find(Features[0], CPUTable, CPUTableSize); @@ -141,6 +166,8 @@ uint32_t SubtargetFeatures::Parse(const std::string &String, for (size_t i = 1; i < Features.size(); i++) { // Get next feature const std::string &Feature = Features[i]; + // Check for help + if (Feature == "+help") Help("feature", FeatureTable, FeatureTableSize); // Find feature in table. const SubtargetFeatureKV *FeatureEntry = Find(StripFlag(Feature), FeatureTable, FeatureTableSize); |