@@ -208,6 +208,15 @@ static bool appendSwiftDriverName(SmallString<256> &buffer) {
208208 return false ;
209209}
210210
211+ static llvm::SmallVector<const char *, 32 > eraseFirstArg (ArrayRef<const char *> argv){
212+ llvm::SmallVector<const char *, 32 > newArgv;
213+ newArgv.push_back (argv[0 ]);
214+ for (const char *arg : argv.slice (2 )) {
215+ newArgv.push_back (arg);
216+ }
217+ return newArgv;
218+ }
219+
211220static int run_driver (StringRef ExecName,
212221 ArrayRef<const char *> argv,
213222 const ArrayRef<const char *> originalArgv) {
@@ -232,6 +241,34 @@ static int run_driver(StringRef ExecName,
232241 argv.data ()+argv.size ()),
233242 argv[0 ], (void *)(intptr_t )getExecutablePath);
234243 }
244+ if (FirstArg == " -sil-opt" ) {
245+ return sil_opt_main (eraseFirstArg (argv),
246+ (void *)(intptr_t )getExecutablePath);
247+ }
248+ if (FirstArg == " -sil-func-extractor" ) {
249+ return sil_func_extractor_main (eraseFirstArg (argv),
250+ (void *)(intptr_t )getExecutablePath);
251+ }
252+ if (FirstArg == " -sil-nm" ) {
253+ return sil_nm_main (eraseFirstArg (argv),
254+ (void *)(intptr_t )getExecutablePath);
255+ }
256+ if (FirstArg == " -sil-llvm-gen" ) {
257+ return sil_llvm_gen_main (eraseFirstArg (argv),
258+ (void *)(intptr_t )getExecutablePath);
259+ }
260+ if (FirstArg == " -sil-passpipeline-dumper" ) {
261+ return sil_passpipeline_dumper_main (eraseFirstArg (argv),
262+ (void *)(intptr_t )getExecutablePath);
263+ }
264+ if (FirstArg == " -swift-dependency-tool" ) {
265+ return swift_dependency_tool_main (eraseFirstArg (argv),
266+ (void *)(intptr_t )getExecutablePath);
267+ }
268+ if (FirstArg == " -swift-llvm-opt" ) {
269+ return swift_llvm_opt_main (eraseFirstArg (argv),
270+ (void *)(intptr_t )getExecutablePath);
271+ }
235272
236273 // Run the integrated Swift frontend when called as "swift-frontend" but
237274 // without a leading "-frontend".
0 commit comments