From bfc3f301b6a5390b990c4abb05d134ffe8bb59bb Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 6 May 2014 16:29:50 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208102 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/SubtargetFeature.cpp | 10 ++++------ tools/llc/llc.cpp | 9 ++++++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/MC/SubtargetFeature.cpp b/lib/MC/SubtargetFeature.cpp index dd69b0fe8c0..8383a181a90 100644 --- a/lib/MC/SubtargetFeature.cpp +++ b/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/tools/llc/llc.cpp b/tools/llc/llc.cpp index 654a9c3eeea..712817d9347 100644 --- a/tools/llc/llc.cpp +++ b/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) -- 2.34.1