r201604 - clang-cl /fallback: emit a note when falling back

Reid Kleckner rnk at google.com
Tue Feb 18 15:08:15 PST 2014


We don't generally emit notes that aren't attached to warnings.  This seems
fine to me in this instance.


On Tue, Feb 18, 2014 at 1:42 PM, Hans Wennborg <hans at hanshq.net> wrote:

> Author: hans
> Date: Tue Feb 18 15:42:51 2014
> New Revision: 201604
>
> URL: http://llvm.org/viewvc/llvm-project?rev=201604&view=rev
> Log:
> clang-cl /fallback: emit a note when falling back
>
> This makes it a lot easier to see what's going on from the output.
>
> Modified:
>     cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
>     cfe/trunk/include/clang/Driver/Job.h
>     cfe/trunk/lib/Driver/Job.cpp
>     cfe/trunk/test/Driver/cl-fallback.c
>
> Modified: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td?rev=201604&r1=201603&r2=201604&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td Tue Feb 18
> 15:42:51 2014
> @@ -170,4 +170,6 @@ def err_analyzer_config_multiple_values
>  def err_drv_modules_validate_once_requires_timestamp : Error<
>    "option '-fmodules-validate-once-per-build-session' requires "
>    "'-fbuild-session-timestamp=<seconds since Epoch>'">;
> +
> +def note_drv_invoking_fallback : Note<"falling back to %0">;
>  }
>
> Modified: cfe/trunk/include/clang/Driver/Job.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Job.h?rev=201604&r1=201603&r2=201604&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/Job.h (original)
> +++ cfe/trunk/include/clang/Driver/Job.h Tue Feb 18 15:42:51 2014
> @@ -88,6 +88,8 @@ public:
>    /// getCreator - Return the Tool which caused the creation of this job.
>    const Tool &getCreator() const { return Creator; }
>
> +  const char *getExecutable() const { return Executable; }
> +
>    const llvm::opt::ArgStringList &getArguments() const { return
> Arguments; }
>
>    static bool classof(const Job *J) {
>
> Modified: cfe/trunk/lib/Driver/Job.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Job.cpp?rev=201604&r1=201603&r2=201604&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Driver/Job.cpp (original)
> +++ cfe/trunk/lib/Driver/Job.cpp Tue Feb 18 15:42:51 2014
> @@ -7,7 +7,11 @@
>  //
>
>  //===----------------------------------------------------------------------===//
>
> +#include "clang/Driver/Driver.h"
> +#include "clang/Driver/DriverDiagnostic.h"
>  #include "clang/Driver/Job.h"
> +#include "clang/Driver/Tool.h"
> +#include "clang/Driver/ToolChain.h"
>  #include "llvm/ADT/STLExtras.h"
>  #include "llvm/ADT/StringRef.h"
>  #include "llvm/ADT/StringSwitch.h"
> @@ -159,6 +163,10 @@ int FallbackCommand::Execute(const Strin
>    if (ExecutionFailed)
>      *ExecutionFailed = false;
>
> +  const Driver &D = getCreator().getToolChain().getDriver();
> +  D.Diag(diag::note_drv_invoking_fallback).setForceEmit()
> +      << Fallback->getExecutable();
> +
>    int SecondaryStatus = Fallback->Execute(Redirects, ErrMsg,
> ExecutionFailed);
>    return SecondaryStatus;
>  }
>
> Modified: cfe/trunk/test/Driver/cl-fallback.c
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-fallback.c?rev=201604&r1=201603&r2=201604&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/Driver/cl-fallback.c (original)
> +++ cfe/trunk/test/Driver/cl-fallback.c Tue Feb 18 15:42:51 2014
> @@ -44,3 +44,9 @@
>  // RUN: %clang_cl /fallback /P -### -- %s 2>&1 | FileCheck
> -check-prefix=P %s
>  // P-NOT: ||
>  // P-NOT: "cl.exe"
> +
> +// RUN: not %clang_cl /fallback /c -- %s 2>&1 | \
> +// RUN:     FileCheck -check-prefix=ErrNote %s
> +// ErrNote: note: falling back to cl.exe
> +
> +#error "This fails to compile."
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140218/3afe558d/attachment.html>


More information about the cfe-commits mailing list