Have the SubtargetFeature help routine just not return a number and

fall back to the normal path without a cpu. While doing this fix
llc to just exit when we don't have a module to process instead of
asserting.

llvm-svn: 208102
This commit is contained in:
Eric Christopher 2014-05-06 16:29:50 +00:00
parent b340f0117c
commit a9f3a5cb37
2 changed files with 12 additions and 7 deletions

View File

@ -129,7 +129,7 @@ static size_t getLongestEntryLength(const SubtargetFeatureKV *Table,
/// Display help for feature choices. /// Display help for feature choices.
/// ///
static uint64_t Help(const SubtargetFeatureKV *CPUTable, size_t CPUTableSize, static void Help(const SubtargetFeatureKV *CPUTable, size_t CPUTableSize,
const SubtargetFeatureKV *FeatTable, const SubtargetFeatureKV *FeatTable,
size_t FeatTableSize) { size_t FeatTableSize) {
// Determine the length of the longest CPU and Feature entries. // Determine the length of the longest CPU and Feature entries.
@ -152,8 +152,6 @@ static uint64_t Help(const SubtargetFeatureKV *CPUTable, size_t CPUTableSize,
errs() << "Use +feature to enable a feature, or -feature to disable it.\n" errs() << "Use +feature to enable a feature, or -feature to disable it.\n"
"For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n"; "For example, llc -mcpu=mycpu -mattr=+feature1,-feature2\n";
return 0;
} }
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
@ -264,10 +262,10 @@ uint64_t SubtargetFeatures::getFeatureBits(const StringRef CPU,
// Check if help is needed // Check if help is needed
if (CPU == "help") if (CPU == "help")
return Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize); Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
// Find CPU entry if CPU name is specified. // Find CPU entry if CPU name is specified.
if (!CPU.empty()) { else if (!CPU.empty()) {
const SubtargetFeatureKV *CPUEntry = Find(CPU, CPUTable, CPUTableSize); const SubtargetFeatureKV *CPUEntry = Find(CPU, CPUTable, CPUTableSize);
// If there is a match // If there is a match
if (CPUEntry) { if (CPUEntry) {
@ -293,7 +291,7 @@ uint64_t SubtargetFeatures::getFeatureBits(const StringRef CPU,
// Check for help // Check for help
if (Feature == "+help") if (Feature == "+help")
return Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize); Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
// Find feature in table. // Find feature in table.
const SubtargetFeatureKV *FeatureEntry = const SubtargetFeatureKV *FeatureEntry =

View File

@ -277,7 +277,14 @@ static int compileModule(char **argv, LLVMContext &Context) {
TheTarget->createTargetMachine(TheTriple.getTriple(), MCPU, FeaturesStr, TheTarget->createTargetMachine(TheTriple.getTriple(), MCPU, FeaturesStr,
Options, RelocModel, CMModel, OLvl)); Options, RelocModel, CMModel, OLvl));
assert(target.get() && "Could not allocate target machine!"); assert(target.get() && "Could not allocate target machine!");
assert(mod && "Should have exited after outputting help!");
// If we don't have a module then just exit now. We do this down
// here since the CPU/Feature help is underneath the target machine
// creation.
if (SkipModule)
return 0;
assert(mod && "Should have exited if we didn't have a module!");
TargetMachine &Target = *target.get(); TargetMachine &Target = *target.get();
if (EnableDwarfDirectory) if (EnableDwarfDirectory)