Skip to content

Commit f312341

Browse files
committed
[clang][deps] Fix downstream conflicts, remove _v3 scanner API
1 parent a61d3f0 commit f312341

File tree

5 files changed

+50
-134
lines changed

5 files changed

+50
-134
lines changed

clang/include/clang-c/Dependencies.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ typedef struct {
7474

7575
/**
7676
* The canonical command line to build this module.
77-
*
78-
* If getFileDependencies_v3 or later was used to get this dependency, it is
79-
* a complete command line. When using getFileDependencies_v2, it excludes
80-
* arguments containing modules-related paths:
81-
* "-fmodule-file=", "-o", "-fmodule-map-file=".
8277
*/
8378
CXStringSet *BuildArguments;
8479
} CXModuleDependency;
@@ -300,16 +295,6 @@ typedef size_t CXModuleLookupOutputCallback(void *Context,
300295
CXOutputKind OutputKind,
301296
char *Output, size_t MaxLen);
302297

303-
/**
304-
* See \c clang_experimental_DependencyScannerWorker_getFileDependencies_v5.
305-
*/
306-
CINDEX_LINKAGE CXFileDependencies *
307-
clang_experimental_DependencyScannerWorker_getFileDependencies_v3(
308-
CXDependencyScannerWorker Worker, int argc, const char *const *argv,
309-
const char *ModuleName, const char *WorkingDirectory, void *MDCContext,
310-
CXModuleDiscoveredCallback *MDC, void *MLOContext,
311-
CXModuleLookupOutputCallback *MLO, unsigned Options, CXString *error);
312-
313298
/**
314299
* See \c clang_experimental_DependencyScannerWorker_getFileDependencies_v5.
315300
* Returns diagnostics in an unstructured CXString instead of CXDiagnosticSet.

clang/test/Index/Core/scan-deps.m

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,6 @@
1414
// RUN: -o FoE.o -x objective-c %s >> %t_savetemps.result
1515
// RUN: cat %t_savetemps.result | sed 's/\\/\//g' | FileCheck %s -DOUTPUTS=%/t --check-prefixes=CHECK,SAVETEMPS
1616

17-
// RUN: c-index-test core --scan-deps %S -output-dir=%t -deprecated-driver-command -- %clang -c -I %S/Inputs/module \
18-
// RUN: -fmodules -fmodules-cache-path=%t.mcp -save-temps=obj \
19-
// RUN: -o FoE.o -x objective-c %s >> %t_v3.result
20-
// RUN: cat %t_v3.result | sed 's/\\/\//g' | FileCheck %s -DOUTPUTS=%/t --check-prefixes=CHECK,DRIVER
21-
2217
@import ModA;
2318

2419
// CHECK: [[PREFIX:.*]]
@@ -43,7 +38,6 @@
4338
// CHECK-NEXT: file-deps:
4439
// CHECK-NEXT: [[PREFIX]]/scan-deps.m
4540
// CC1-NEXT: build-args: -cc1 {{.*}} -fmodule-file={{(ModA=)?}}{{.*}}ModA_{{.*}}.pcm
46-
// DRIVER-NEXT: build-args: -c {{.*}} -save-temps=obj {{.*}} -fno-implicit-modules -fno-implicit-module-maps {{.*}} -fmodule-file={{(ModA=)?}}{{.*}}ModA_{{.*}}.pcm
4741
// SAVETEMPS-NEXT: build-args: -cc1 {{.*}} -E {{.*}} -fmodule-file={{(ModA=)?}}{{.*}}ModA_{{.*}}.pcm
4842

4943
// SAVETEMPS-NEXT: command 1:

clang/tools/c-index-test/core_main.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,6 @@ static cl::opt<bool>
137137
static cl::list<std::string> DependencyTargets(
138138
"dependency-target",
139139
cl::desc("module builds should use the given dependency target(s)"));
140-
static cl::opt<bool> DeprecatedDriverCommand(
141-
"deprecated-driver-command",
142-
cl::desc("use a single driver command to build the tu (deprecated)"));
143140
static llvm::cl::opt<std::string>
144141
CASPath("cas-path", llvm::cl::desc("Path for on-disk CAS."));
145142
static llvm::cl::opt<std::string>
@@ -817,28 +814,6 @@ static int scanDeps(ArrayRef<const char *> Args, std::string WorkingDirectory,
817814
llvm::outs() << "\n";
818815
};
819816

820-
if (options::DeprecatedDriverCommand) {
821-
CXString Error;
822-
CXFileDependencies *Result =
823-
clang_experimental_DependencyScannerWorker_getFileDependencies_v3(
824-
Worker, Args.size(), Args.data(),
825-
ModuleName ? ModuleName->c_str() : nullptr,
826-
WorkingDirectory.c_str(), CB.Context, CB.Callback,
827-
LookupOutputCB.Context, LookupOutputCB.Callback,
828-
/*Options=*/0, &Error);
829-
if (Result) {
830-
llvm::outs() << "dependencies:\n";
831-
HandleCommand(Result->ContextHash, Result->ModuleDeps, Result->FileDeps,
832-
Result->BuildArguments);
833-
clang_experimental_FileDependencies_dispose(Result);
834-
return 0;
835-
}
836-
llvm::errs() << "error: failed to get dependencies\n";
837-
llvm::errs() << clang_getCString(Error) << "\n";
838-
clang_disposeString(Error);
839-
return 1;
840-
}
841-
842817
CXFileDependenciesList *Result = nullptr;
843818
CXDiagnosticSet Diags;
844819
auto DisposeDiagnosticSet =

clang/tools/libclang/CDependencies.cpp

Lines changed: 50 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -174,18 +174,19 @@ void clang_experimental_DependencyScannerWorker_dispose_v0(
174174
delete unwrap(Worker);
175175
}
176176

177-
using HandleFullDepsCallback = llvm::function_ref<void(FullDependencies)>;
178-
179-
static CXErrorCode getFullDependencies(
180-
DependencyScanningWorker *Worker, ArrayRef<std::string> Compilation,
181-
const char *WorkingDirectory, CXModuleDiscoveredCallback *MDC,
182-
void *Context, CXString *Error, DiagnosticConsumer *DiagConsumer,
183-
LookupModuleOutputCallback LookupOutput, bool DeprecatedDriverCommand,
184-
llvm::Optional<StringRef> ModuleName,
185-
HandleFullDepsCallback HandleFullDeps) {
177+
using HandleTUDepsCallback = llvm::function_ref<void(TranslationUnitDeps)>;
178+
179+
static CXErrorCode getFullDependencies(DependencyScanningWorker *Worker,
180+
ArrayRef<std::string> Compilation,
181+
const char *WorkingDirectory,
182+
CXModuleDiscoveredCallback *MDC,
183+
void *Context, CXString *Error,
184+
DiagnosticConsumer *DiagConsumer,
185+
LookupModuleOutputCallback LookupOutput,
186+
llvm::Optional<StringRef> ModuleName,
187+
HandleTUDepsCallback HandleTUDeps) {
186188
llvm::StringSet<> AlreadySeen;
187189
FullDependencyConsumer DepConsumer(AlreadySeen, LookupOutput,
188-
Worker->shouldEagerLoadModules(),
189190
Worker->getCASFS());
190191

191192
bool HasDiagConsumer = DiagConsumer;
@@ -206,19 +207,15 @@ static CXErrorCode getFullDependencies(
206207
}
207208
}
208209

209-
FullDependenciesResult FDR;
210-
if (DeprecatedDriverCommand)
211-
FDR = DepConsumer.getFullDependenciesLegacyDriverCommand(Compilation);
212-
else
213-
FDR = DepConsumer.takeFullDependencies();
210+
TranslationUnitDeps TU = DepConsumer.takeTranslationUnitDeps();
214211

215-
if (!FDR.DiscoveredModules.empty()) {
212+
if (!TU.ModuleGraph.empty()) {
216213
CXModuleDependencySet *MDS = new CXModuleDependencySet;
217-
MDS->Count = FDR.DiscoveredModules.size();
214+
MDS->Count = TU.ModuleGraph.size();
218215
MDS->Modules = new CXModuleDependency[MDS->Count];
219216
for (int I = 0; I < MDS->Count; ++I) {
220217
CXModuleDependency &M = MDS->Modules[I];
221-
const ModuleDeps &MD = FDR.DiscoveredModules[I];
218+
const ModuleDeps &MD = TU.ModuleGraph[I];
222219
M.Name = cxstring::createDup(MD.ID.ModuleName);
223220
M.ContextHash = cxstring::createDup(MD.ID.ContextHash);
224221
M.ModuleMapPath = cxstring::createDup(MD.ClangModuleMapFile);
@@ -232,17 +229,19 @@ static CXErrorCode getFullDependencies(
232229
MDC(Context, MDS);
233230
}
234231

235-
HandleFullDeps(std::move(FDR.FullDeps));
232+
HandleTUDeps(std::move(TU));
236233
return CXError_Success;
237234
}
238235

239-
static CXErrorCode getFileDependencies(
240-
CXDependencyScannerWorker W, int argc, const char *const *argv,
241-
const char *WorkingDirectory, CXModuleDiscoveredCallback *MDC,
242-
void *Context, CXString *Error, DiagnosticConsumer *DiagConsumer,
243-
LookupModuleOutputCallback LookupOutput, bool DeprecatedDriverCommand,
244-
llvm::Optional<StringRef> ModuleName,
245-
HandleFullDepsCallback HandleFullDeps) {
236+
static CXErrorCode getFileDependencies(CXDependencyScannerWorker W, int argc,
237+
const char *const *argv,
238+
const char *WorkingDirectory,
239+
CXModuleDiscoveredCallback *MDC,
240+
void *Context, CXString *Error,
241+
DiagnosticConsumer *DiagConsumer,
242+
LookupModuleOutputCallback LookupOutput,
243+
llvm::Optional<StringRef> ModuleName,
244+
HandleTUDepsCallback HandleTUDeps) {
246245
if (!W || argc < 2 || !argv)
247246
return CXError_InvalidArguments;
248247

@@ -253,9 +252,9 @@ static CXErrorCode getFileDependencies(
253252

254253
std::vector<std::string> Compilation{argv, argv + argc};
255254

256-
return getFullDependencies(
257-
Worker, Compilation, WorkingDirectory, MDC, Context, Error, DiagConsumer,
258-
LookupOutput, DeprecatedDriverCommand, ModuleName, HandleFullDeps);
255+
return getFullDependencies(Worker, Compilation, WorkingDirectory, MDC,
256+
Context, Error, DiagConsumer, LookupOutput,
257+
ModuleName, HandleTUDeps);
259258
}
260259

261260
namespace {
@@ -272,38 +271,6 @@ class OutputLookup {
272271
};
273272
} // end anonymous namespace
274273

275-
CXFileDependencies *
276-
clang_experimental_DependencyScannerWorker_getFileDependencies_v3(
277-
CXDependencyScannerWorker W, int argc, const char *const *argv,
278-
const char *ModuleName, const char *WorkingDirectory, void *MDCContext,
279-
CXModuleDiscoveredCallback *MDC, void *MLOContext,
280-
CXModuleLookupOutputCallback *MLO, unsigned, CXString *Error) {
281-
OutputLookup OL(MLOContext, MLO);
282-
auto LookupOutputs = [&](const ModuleID &ID, ModuleOutputKind MOK) {
283-
return OL.lookupModuleOutput(ID, MOK);
284-
};
285-
CXFileDependencies *FDeps = nullptr;
286-
CXErrorCode Result = getFileDependencies(
287-
W, argc, argv, WorkingDirectory, MDC, MDCContext, Error, nullptr,
288-
LookupOutputs,
289-
/*DeprecatedDriverCommand=*/true,
290-
ModuleName ? Optional<StringRef>(ModuleName) : None,
291-
[&](FullDependencies FD) {
292-
assert(!FD.DriverCommandLine.empty());
293-
std::vector<std::string> Modules;
294-
for (const ModuleID &MID : FD.ClangModuleDeps)
295-
Modules.push_back(MID.ModuleName + ":" + MID.ContextHash);
296-
FDeps = new CXFileDependencies;
297-
FDeps->ContextHash = cxstring::createDup(FD.ID.ContextHash);
298-
FDeps->FileDeps = cxstring::createSet(FD.FileDeps);
299-
FDeps->ModuleDeps = cxstring::createSet(Modules);
300-
FDeps->BuildArguments = cxstring::createSet(FD.DriverCommandLine);
301-
});
302-
assert(Result != CXError_Success || FDeps);
303-
(void)Result;
304-
return FDeps;
305-
}
306-
307274
CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v4(
308275
CXDependencyScannerWorker W, int argc, const char *const *argv,
309276
const char *ModuleName, const char *WorkingDirectory, void *MDCContext,
@@ -321,25 +288,23 @@ CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v4(
321288

322289
CXErrorCode Result = getFileDependencies(
323290
W, argc, argv, WorkingDirectory, MDC, MDCContext, Error, nullptr,
324-
LookupOutputs,
325-
/*DeprecatedDriverCommand=*/false,
326-
ModuleName ? Optional<StringRef>(ModuleName) : None,
327-
[&](FullDependencies FD) {
328-
assert(FD.DriverCommandLine.empty());
291+
LookupOutputs, ModuleName ? Optional<StringRef>(ModuleName) : None,
292+
[&](TranslationUnitDeps TU) {
293+
assert(TU.DriverCommandLine.empty());
329294
std::vector<std::string> Modules;
330-
for (const ModuleID &MID : FD.ClangModuleDeps)
295+
for (const ModuleID &MID : TU.ClangModuleDeps)
331296
Modules.push_back(MID.ModuleName + ":" + MID.ContextHash);
332-
auto *Commands = new CXTranslationUnitCommand[FD.Commands.size()];
333-
for (size_t I = 0, E = FD.Commands.size(); I < E; ++I) {
334-
Commands[I].ContextHash = cxstring::createDup(FD.ID.ContextHash);
335-
Commands[I].FileDeps = cxstring::createSet(FD.FileDeps);
297+
auto *Commands = new CXTranslationUnitCommand[TU.Commands.size()];
298+
for (size_t I = 0, E = TU.Commands.size(); I < E; ++I) {
299+
Commands[I].ContextHash = cxstring::createDup(TU.ID.ContextHash);
300+
Commands[I].FileDeps = cxstring::createSet(TU.FileDeps);
336301
Commands[I].ModuleDeps = cxstring::createSet(Modules);
337302
Commands[I].Executable =
338-
cxstring::createDup(FD.Commands[I].Executable);
303+
cxstring::createDup(TU.Commands[I].Executable);
339304
Commands[I].BuildArguments =
340-
cxstring::createSet(FD.Commands[I].Arguments);
305+
cxstring::createSet(TU.Commands[I].Arguments);
341306
}
342-
*Out = new CXFileDependenciesList{FD.Commands.size(), Commands};
307+
*Out = new CXFileDependenciesList{TU.Commands.size(), Commands};
343308
});
344309

345310
return Result;
@@ -364,25 +329,23 @@ CXErrorCode clang_experimental_DependencyScannerWorker_getFileDependencies_v5(
364329

365330
CXErrorCode Result = getFileDependencies(
366331
W, argc, argv, WorkingDirectory, MDC, MDCContext, nullptr, &DiagConsumer,
367-
LookupOutputs,
368-
/*DeprecatedDriverCommand=*/false,
369-
ModuleName ? Optional<StringRef>(ModuleName) : None,
370-
[&](FullDependencies FD) {
371-
assert(FD.DriverCommandLine.empty());
332+
LookupOutputs, ModuleName ? Optional<StringRef>(ModuleName) : None,
333+
[&](TranslationUnitDeps TU) {
334+
assert(TU.DriverCommandLine.empty());
372335
std::vector<std::string> Modules;
373-
for (const ModuleID &MID : FD.ClangModuleDeps)
336+
for (const ModuleID &MID : TU.ClangModuleDeps)
374337
Modules.push_back(MID.ModuleName + ":" + MID.ContextHash);
375-
auto *Commands = new CXTranslationUnitCommand[FD.Commands.size()];
376-
for (size_t I = 0, E = FD.Commands.size(); I < E; ++I) {
377-
Commands[I].ContextHash = cxstring::createDup(FD.ID.ContextHash);
378-
Commands[I].FileDeps = cxstring::createSet(FD.FileDeps);
338+
auto *Commands = new CXTranslationUnitCommand[TU.Commands.size()];
339+
for (size_t I = 0, E = TU.Commands.size(); I < E; ++I) {
340+
Commands[I].ContextHash = cxstring::createDup(TU.ID.ContextHash);
341+
Commands[I].FileDeps = cxstring::createSet(TU.FileDeps);
379342
Commands[I].ModuleDeps = cxstring::createSet(Modules);
380343
Commands[I].Executable =
381-
cxstring::createDup(FD.Commands[I].Executable);
344+
cxstring::createDup(TU.Commands[I].Executable);
382345
Commands[I].BuildArguments =
383-
cxstring::createSet(FD.Commands[I].Arguments);
346+
cxstring::createSet(TU.Commands[I].Arguments);
384347
}
385-
*Out = new CXFileDependenciesList{FD.Commands.size(), Commands};
348+
*Out = new CXFileDependenciesList{TU.Commands.size(), Commands};
386349
});
387350

388351
*OutDiags = DiagConsumer.getDiagnosticSet();

clang/tools/libclang/libclang.map

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,6 @@ LLVM_13 {
279279
clang_experimental_DependencyScannerService_dispose_v0;
280280
clang_experimental_DependencyScannerWorker_create_v0;
281281
clang_experimental_DependencyScannerWorker_dispose_v0;
282-
clang_experimental_DependencyScannerWorker_getFileDependencies_v3;
283282
clang_experimental_DependencyScannerWorker_getFileDependencies_v4;
284283
clang_experimental_FileDependencies_dispose;
285284
clang_experimental_FileDependenciesList_dispose;

0 commit comments

Comments
 (0)