diff --git a/lib/DriverTool/modulewrap_main.cpp b/lib/DriverTool/modulewrap_main.cpp index 3bce40120d045..f918613db0ea0 100644 --- a/lib/DriverTool/modulewrap_main.cpp +++ b/lib/DriverTool/modulewrap_main.cpp @@ -48,6 +48,7 @@ class ModuleWrapInvocation { llvm::Triple TargetTriple; std::vector InputFilenames; bool UseSharedResourceFolder = true; + bool EnableObjCInterop = true; public: bool hasSingleInput() const { return InputFilenames.size() == 1; } @@ -65,6 +66,7 @@ class ModuleWrapInvocation { llvm::Triple &getTargetTriple() { return TargetTriple; } bool useSharedResourceFolder() { return UseSharedResourceFolder; } + bool enableObjCInterop() { return EnableObjCInterop; } int parseArgs(llvm::ArrayRef Args, DiagnosticEngine &Diags) { using namespace options; @@ -124,6 +126,9 @@ class ModuleWrapInvocation { UseSharedResourceFolder = false; } + EnableObjCInterop = ParsedArgs.hasFlag(OPT_enable_objc_interop, + OPT_disable_objc_interop, TargetTriple.isOSDarwin()); + return 0; } }; @@ -184,6 +189,7 @@ int modulewrap_main(ArrayRef Args, const char *Argv0, symbolgraphgen::SymbolGraphOptions SymbolGraphOpts; CASOptions CASOpts; LangOpts.Target = Invocation.getTargetTriple(); + LangOpts.EnableObjCInterop = Invocation.enableObjCInterop(); ASTContext &ASTCtx = *ASTContext::get( LangOpts, TypeCheckOpts, SILOpts, SearchPathOpts, ClangImporterOpts, SymbolGraphOpts, CASOpts, SrcMgr, Instance.getDiags(),