Move supplementary outputs to SupplementaryOutputs in FrontendInputsAndOutputs.

This commit is contained in:
David Ungar
2018-02-03 18:10:13 -08:00
parent 7271f682bf
commit ba4f2a84b4
15 changed files with 526 additions and 209 deletions

View File

@@ -35,6 +35,7 @@ FrontendInputsAndOutputs::FrontendInputsAndOutputs(
for (InputFile input : other.AllInputs)
addInput(input);
IsSingleThreadedWMO = other.IsSingleThreadedWMO;
SupplementaryOutputs = other.SupplementaryOutputs;
}
FrontendInputsAndOutputs &FrontendInputsAndOutputs::
@@ -43,6 +44,7 @@ operator=(const FrontendInputsAndOutputs &other) {
for (InputFile input : other.AllInputs)
addInput(input);
IsSingleThreadedWMO = other.IsSingleThreadedWMO;
SupplementaryOutputs = other.SupplementaryOutputs;
return *this;
}
@@ -284,10 +286,12 @@ void FrontendInputsAndOutputs::forEachInputProducingAMainOutputFile(
: hasPrimaryInputs() ? forEachPrimaryInput(fn) : forEachInput(fn);
}
void FrontendInputsAndOutputs::setMainOutputs(
ArrayRef<std::string> outputFiles) {
assert(countOfInputsProducingMainOutputs() == outputFiles.size());
if (hasPrimaryInputs()) {
void FrontendInputsAndOutputs::setMainAndSupplementaryOutputs(
ArrayRef<std::string> outputFiles,
SupplementaryOutputPaths supplementaryOutputs) {
if (outputFiles.empty())
;
else if (hasPrimaryInputs()) {
unsigned i = 0;
for (auto index : indices(AllInputs)) {
InputFile &f = AllInputs[index];
@@ -300,6 +304,7 @@ void FrontendInputsAndOutputs::setMainOutputs(
for (auto i : indices(AllInputs))
AllInputs[i].setOutputFilename(outputFiles[i]);
}
SupplementaryOutputs = supplementaryOutputs;
}
std::vector<std::string> FrontendInputsAndOutputs::copyOutputFilenames() const {
@@ -337,6 +342,12 @@ bool FrontendInputsAndOutputs::hasNamedOutputFile() const {
// Supplementary outputs
unsigned
FrontendInputsAndOutputs::countOfFilesProducingSupplementaryOutput() const {
assertMustNotBeMoreThanOnePrimaryInput();
return 1; // will be extended when batch mode is implemented
}
void FrontendInputsAndOutputs::forEachInputProducingSupplementaryOutput(
llvm::function_ref<void(const InputFile &)> fn) const {
if (hasPrimaryInputs())
@@ -344,3 +355,30 @@ void FrontendInputsAndOutputs::forEachInputProducingSupplementaryOutput(
else
fn(firstInput());
}
bool FrontendInputsAndOutputs::hasDependenciesPath() const {
return !supplementaryOutputs().DependenciesFilePath.empty();
}
bool FrontendInputsAndOutputs::hasReferenceDependenciesPath() const {
return !supplementaryOutputs().ReferenceDependenciesFilePath.empty();
}
bool FrontendInputsAndOutputs::hasObjCHeaderOutputPath() const {
return !supplementaryOutputs().ObjCHeaderOutputPath.empty();
}
bool FrontendInputsAndOutputs::hasLoadedModuleTracePath() const {
return !supplementaryOutputs().LoadedModuleTracePath.empty();
}
bool FrontendInputsAndOutputs::hasModuleOutputPath() const {
return !supplementaryOutputs().ModuleOutputPath.empty();
}
bool FrontendInputsAndOutputs::hasModuleDocOutputPath() const {
return !supplementaryOutputs().ModuleDocOutputPath.empty();
}
bool FrontendInputsAndOutputs::hasTBDPath() const {
return !supplementaryOutputs().TBDPath.empty();
}
bool FrontendInputsAndOutputs::hasDependencyTrackerPath() const {
return hasDependenciesPath() || hasReferenceDependenciesPath() ||
hasLoadedModuleTracePath();
}