Return a pointer instead of having a pointer outparam and a bool return.

llvm-svn: 234592
This commit is contained in:
Rafael Espindola 2015-04-10 13:14:31 +00:00
parent fe47a98c18
commit bfd25d4d8a
2 changed files with 19 additions and 20 deletions

View File

@ -118,11 +118,10 @@ public:
/// create the PCHGenerator instance returned by CreateASTConsumer.
///
/// \returns true if an error occurred, false otherwise.
bool ComputeASTConsumerArguments(CompilerInstance &CI,
raw_ostream *ComputeASTConsumerArguments(CompilerInstance &CI,
StringRef InFile,
std::string &Sysroot,
std::string &OutputFile,
raw_ostream *&OS);
std::string &OutputFile);
};
class SyntaxOnlyAction : public ASTFrontendAction {

View File

@ -118,8 +118,9 @@ GenerateModuleAction::CreateASTConsumer(CompilerInstance &CI,
StringRef InFile) {
std::string Sysroot;
std::string OutputFile;
raw_ostream *OS = nullptr;
if (ComputeASTConsumerArguments(CI, InFile, Sysroot, OutputFile, OS))
raw_ostream *OS =
ComputeASTConsumerArguments(CI, InFile, Sysroot, OutputFile);
if (!OS)
return nullptr;
return llvm::make_unique<PCHGenerator>(CI.getPreprocessor(), OutputFile,
@ -355,11 +356,9 @@ bool GenerateModuleAction::BeginSourceFileAction(CompilerInstance &CI,
return true;
}
bool GenerateModuleAction::ComputeASTConsumerArguments(CompilerInstance &CI,
StringRef InFile,
std::string &Sysroot,
std::string &OutputFile,
raw_ostream *&OS) {
raw_ostream *GenerateModuleAction::ComputeASTConsumerArguments(
CompilerInstance &CI, StringRef InFile, std::string &Sysroot,
std::string &OutputFile) {
// If no output file was provided, figure out where this module would go
// in the module cache.
if (CI.getFrontendOpts().OutputFile.empty()) {
@ -372,15 +371,16 @@ bool GenerateModuleAction::ComputeASTConsumerArguments(CompilerInstance &CI,
// We use createOutputFile here because this is exposed via libclang, and we
// must disable the RemoveFileOnSignal behavior.
// We use a temporary to avoid race conditions.
OS = CI.createOutputFile(CI.getFrontendOpts().OutputFile, /*Binary=*/true,
raw_ostream *OS =
CI.createOutputFile(CI.getFrontendOpts().OutputFile, /*Binary=*/true,
/*RemoveFileOnSignal=*/false, InFile,
/*Extension=*/"", /*useTemporary=*/true,
/*CreateMissingDirectories=*/true);
if (!OS)
return true;
return nullptr;
OutputFile = CI.getFrontendOpts().OutputFile;
return false;
return OS;
}
std::unique_ptr<ASTConsumer>