forked from OSchip/llvm-project
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:
parent
b340f0117c
commit
a9f3a5cb37
|
@ -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 =
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue