mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-28 22:20:43 +00:00
When users ask for -mcpu=help or -mattr=help, just output the help without
requiring a module. Original patch by Sunay Ismail, simplified by Arnaud de Grandmaison, then complicated by me (if a triple was specified on the command line, output help for that triple, not for the default). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159268 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2d5f8ca3d1
commit
f6ce8ea20c
@ -365,20 +365,29 @@ int main(int argc, char **argv) {
|
||||
// Load the module to be compiled...
|
||||
SMDiagnostic Err;
|
||||
std::auto_ptr<Module> M;
|
||||
Module *mod = 0;
|
||||
Triple TheTriple;
|
||||
|
||||
M.reset(ParseIRFile(InputFilename, Err, Context));
|
||||
if (M.get() == 0) {
|
||||
Err.print(argv[0], errs());
|
||||
return 1;
|
||||
bool SkipModule = MCPU == "help" ||
|
||||
(!MAttrs.empty() && MAttrs.front() == "help");
|
||||
|
||||
// If user just wants to list available options, skip module loading
|
||||
if (!SkipModule) {
|
||||
M.reset(ParseIRFile(InputFilename, Err, Context));
|
||||
mod = M.get();
|
||||
if (mod == 0) {
|
||||
Err.print(argv[0], errs());
|
||||
return 1;
|
||||
}
|
||||
|
||||
// If we are supposed to override the target triple, do so now.
|
||||
if (!TargetTriple.empty())
|
||||
mod->setTargetTriple(Triple::normalize(TargetTriple));
|
||||
TheTriple = Triple(mod->getTargetTriple());
|
||||
} else {
|
||||
TheTriple = Triple(Triple::normalize(TargetTriple));
|
||||
}
|
||||
Module &mod = *M.get();
|
||||
|
||||
// If we are supposed to override the target triple, do so now.
|
||||
if (!TargetTriple.empty())
|
||||
mod.setTargetTriple(Triple::normalize(TargetTriple));
|
||||
|
||||
// Figure out the target triple.
|
||||
Triple TheTriple(mod.getTargetTriple());
|
||||
if (TheTriple.getTriple().empty())
|
||||
TheTriple.setTriple(sys::getDefaultTargetTriple());
|
||||
|
||||
@ -441,6 +450,7 @@ int main(int argc, char **argv) {
|
||||
MCPU, FeaturesStr, Options,
|
||||
RelocModel, CMModel, OLvl));
|
||||
assert(target.get() && "Could not allocate target machine!");
|
||||
assert(mod && "Should have exited after outputting help!");
|
||||
TargetMachine &Target = *target.get();
|
||||
|
||||
if (DisableDotLoc)
|
||||
@ -472,7 +482,7 @@ int main(int argc, char **argv) {
|
||||
if (const TargetData *TD = Target.getTargetData())
|
||||
PM.add(new TargetData(*TD));
|
||||
else
|
||||
PM.add(new TargetData(&mod));
|
||||
PM.add(new TargetData(mod));
|
||||
|
||||
// Override default to generate verbose assembly.
|
||||
Target.setAsmVerbosityDefault(true);
|
||||
@ -498,7 +508,7 @@ int main(int argc, char **argv) {
|
||||
// Before executing passes, print the final values of the LLVM options.
|
||||
cl::PrintOptionValues();
|
||||
|
||||
PM.run(mod);
|
||||
PM.run(*mod);
|
||||
}
|
||||
|
||||
// Declare success.
|
||||
|
Loading…
Reference in New Issue
Block a user