Have the SubtargetFeature help routine just not return a number and
authorEric Christopher <echristo@gmail.com>
Tue, 6 May 2014 16:29:50 +0000 (16:29 +0000)
committerEric Christopher <echristo@gmail.com>
Tue, 6 May 2014 16:29:50 +0000 (16:29 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208102 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/SubtargetFeature.cpp
tools/llc/llc.cpp

index dd69b0fe8c0169dbc590bb2d3ffcd3ba6fcf63d7..8383a181a902592894c1bf5e9adb5711a22d82ef 100644 (file)
@@ -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 =
index 654a9c3eeea89e7a9d20b2ddaddc8e9ecff8b6e8..712817d9347e8201f93c5ad92ee276e14a3399b7 100644 (file)
@@ -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)