Rewrite the debug action handling to take -verify into account.

Add a quiet option for dwarfdump and move it out of NDEBUG only.
Still requires an option as we don't want this on by default.

llvm-svn: 149894
This commit is contained in:
Eric Christopher
2012-02-06 19:43:51 +00:00
parent a27a16c04d
commit 65c05fa79c
2 changed files with 17 additions and 18 deletions

View File

@@ -853,34 +853,32 @@ void Driver::BuildUniversalActions(const ToolChain &TC,
else
Actions.push_back(new LipoJobAction(Inputs, Act->getType()));
// Add a 'dsymutil' step if necessary, when debug info is enabled and we
// have a compile input. We need to run 'dsymutil' ourselves in such cases
// because the debug info will refer to a temporary object file which is
// will be removed at the end of the compilation process.
if (Act->getType() == types::TY_Image) {
Arg *A = Args.getLastArg(options::OPT_g_Group);
// Handle debug info queries.
Arg *A = Args.getLastArg(options::OPT_g_Group);
if (A && !A->getOption().matches(options::OPT_g0) &&
!A->getOption().matches(options::OPT_gstabs) &&
ContainsCompileOrAssembleAction(Actions.back())) {
ActionList Inputs;
Inputs.push_back(Actions.back());
Actions.pop_back();
// Add a 'dsymutil' step if necessary, when debug info is enabled and we
// have a compile input. We need to run 'dsymutil' ourselves in such cases
// because the debug info will refer to a temporary object file which is
// will be removed at the end of the compilation process.
if (Act->getType() == types::TY_Image) {
ActionList Inputs;
Inputs.push_back(Actions.back());
Actions.pop_back();
Actions.push_back(new DsymutilJobAction(Inputs, types::TY_dSYM));
}
Actions.push_back(new DsymutilJobAction(Inputs, types::TY_dSYM));
// Verify the debug information if we're in debug mode and '-verify'
// is passed.
#ifndef NDEBUG
if (Args.hasArg(options::OPT_verify)) {
ActionList VerifyInputs;
// Verify the output (debug information only) if we passed '-verify'.
if (Args.hasArg(options::OPT_verify)) {
ActionList VerifyInputs;
VerifyInputs.push_back(Actions.back());
Actions.pop_back();
Actions.push_back(new VerifyJobAction(VerifyInputs,
types::TY_Nothing));
}
#endif
}
}
}
}