summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2014-05-06 16:29:50 +0000
committerEric Christopher <echristo@gmail.com>2014-05-06 16:29:50 +0000
commita9f3a5cb376d4cf9d1148ddef8805646ead90066 (patch)
tree671a986bedc6f2928d8aa2c74ac0870568fddfd6
parentb340f0117c8093d0e06cf640765c3f7b592a0f78 (diff)
downloadbcm5719-llvm-a9f3a5cb376d4cf9d1148ddef8805646ead90066.tar.gz
bcm5719-llvm-a9f3a5cb376d4cf9d1148ddef8805646ead90066.zip
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
-rw-r--r--llvm/lib/MC/SubtargetFeature.cpp10
-rw-r--r--llvm/tools/llc/llc.cpp9
2 files changed, 12 insertions, 7 deletions
diff --git a/llvm/lib/MC/SubtargetFeature.cpp b/llvm/lib/MC/SubtargetFeature.cpp
index dd69b0fe8c0..8383a181a90 100644
--- a/llvm/lib/MC/SubtargetFeature.cpp
+++ b/llvm/lib/MC/SubtargetFeature.cpp
@@ -129,7 +129,7 @@ static size_t getLongestEntryLength(const SubtargetFeatureKV *Table,
/// 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,
size_t FeatTableSize) {
// 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"
"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
if (CPU == "help")
- return Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
+ Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
// Find CPU entry if CPU name is specified.
- if (!CPU.empty()) {
+ else if (!CPU.empty()) {
const SubtargetFeatureKV *CPUEntry = Find(CPU, CPUTable, CPUTableSize);
// If there is a match
if (CPUEntry) {
@@ -293,7 +291,7 @@ uint64_t SubtargetFeatures::getFeatureBits(const StringRef CPU,
// Check for help
if (Feature == "+help")
- return Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
+ Help(CPUTable, CPUTableSize, FeatureTable, FeatureTableSize);
// Find feature in table.
const SubtargetFeatureKV *FeatureEntry =
diff --git a/llvm/tools/llc/llc.cpp b/llvm/tools/llc/llc.cpp
index 654a9c3eeea..712817d9347 100644
--- a/llvm/tools/llc/llc.cpp
+++ b/llvm/tools/llc/llc.cpp
@@ -277,7 +277,14 @@ static int compileModule(char **argv, LLVMContext &Context) {
TheTarget->createTargetMachine(TheTriple.getTriple(), MCPU, FeaturesStr,
Options, RelocModel, CMModel, OLvl));
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();
if (EnableDwarfDirectory)
OpenPOWER on IntegriCloud