@@ -206,14 +206,18 @@ static void validateSearchPathArgs(DiagnosticEngine &diags,
206206}
207207
208208static void validateAutolinkingArgs (DiagnosticEngine &diags,
209- const ArgList &args) {
209+ const ArgList &args,
210+ const llvm::Triple &T) {
210211 auto *forceLoadArg = args.getLastArg (options::OPT_autolink_force_load);
211212 if (!forceLoadArg)
212213 return ;
213214 auto *incrementalArg = args.getLastArg (options::OPT_incremental);
214215 if (!incrementalArg)
215216 return ;
216217
218+ if (T.supportsCOMDAT ())
219+ return ;
220+
217221 // Note: -incremental can itself be overridden by other arguments later
218222 // on, but since -autolink-force-load is a rare and not-really-recommended
219223 // option it's not worth modeling that complexity here (or moving the
@@ -223,14 +227,15 @@ static void validateAutolinkingArgs(DiagnosticEngine &diags,
223227}
224228
225229// / Perform miscellaneous early validation of arguments.
226- static void validateArgs (DiagnosticEngine &diags, const ArgList &args) {
230+ static void validateArgs (DiagnosticEngine &diags, const ArgList &args,
231+ const llvm::Triple &T) {
227232 validateBridgingHeaderArgs (diags, args);
228233 validateWarningControlArgs (diags, args);
229234 validateProfilingArgs (diags, args);
230235 validateDebugInfoArgs (diags, args);
231236 validateCompilationConditionArgs (diags, args);
232237 validateSearchPathArgs (diags, args);
233- validateAutolinkingArgs (diags, args);
238+ validateAutolinkingArgs (diags, args, T );
234239}
235240
236241std::unique_ptr<ToolChain>
@@ -783,7 +788,7 @@ Driver::buildCompilation(const ToolChain &TC,
783788 std::unique_ptr<DerivedArgList> TranslatedArgList (
784789 translateInputAndPathArgs (*ArgList, workingDirectory));
785790
786- validateArgs (Diags, *TranslatedArgList);
791+ validateArgs (Diags, *TranslatedArgList, TC. getTriple () );
787792
788793 // Perform toolchain specific args validation.
789794 TC.validateArguments (Diags, *TranslatedArgList);
0 commit comments