diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -4520,6 +4520,7 @@ llvm::PrettyStackTraceString CrashInfo("Building compilation jobs"); Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o); + bool SyntaxOnly = C.getArgs().getLastArg(options::OPT_fsyntax_only); // It is an error to provide a -o option if we are making multiple output // files. There are exceptions: @@ -4536,7 +4537,8 @@ // // OffloadClass of type TY_Nothing: device-only output will place many outputs // into a single offloading action. We should count all inputs to the action - // as outputs. + // as outputs. Also ignore device-only outputs if we're compiling with + // -fsyntax-only. if (FinalOutput) { unsigned NumOutputs = 0; unsigned NumIfsOutputs = 0; @@ -4550,7 +4552,7 @@ A->getInputs().front()->getKind() == Action::IfsMergeJobClass))) ++NumOutputs; else if (A->getKind() == Action::OffloadClass && - A->getType() == types::TY_Nothing) + A->getType() == types::TY_Nothing && !SyntaxOnly) NumOutputs += A->size(); }