diff options
| author | Hans Wennborg <hans@hanshq.net> | 2014-01-29 01:04:40 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2014-01-29 01:04:40 +0000 |
| commit | cfdd8b54cfae20ff52d7409b423413b3ba4de817 (patch) | |
| tree | e45ee0df4113a37676b8af41d14260e169f019c4 | |
| parent | 21bfc717520c6545823de224dd4c376ad2799ace (diff) | |
| download | bcm5719-llvm-cfdd8b54cfae20ff52d7409b423413b3ba4de817.tar.gz bcm5719-llvm-cfdd8b54cfae20ff52d7409b423413b3ba4de817.zip | |
clang-cl: Better error message when trying to compile stdin (PR18640)
We should suggest using /Tc or /Tp to set the input type, instead of
erroneously suggesting -x, which isn't a clang-cl flag.
llvm-svn: 200362
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticDriverKinds.td | 2 | ||||
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Driver/cl-inputs.c | 8 |
3 files changed, 12 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 59805b59ba2..dbc5ce994c6 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -17,6 +17,8 @@ def err_drv_unsupported_option_argument : Error< "unsupported argument '%1' to option '%0'">; def err_drv_unknown_stdin_type : Error< "-E or -x required when input is from standard input">; +def err_drv_unknown_stdin_type_clang_cl : Error< + "use /Tc or /Tp to set input type for standard input">; def err_drv_unknown_language : Error<"language not recognized: '%0'">; def err_drv_invalid_arch_name : Error< "invalid arch name '%0'">; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index ca3e50fd535..bd43fbeec19 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -1030,7 +1030,8 @@ void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args, // Otherwise emit an error but still use a valid type to avoid // spurious errors (e.g., no inputs). if (!Args.hasArgNoClaim(options::OPT_E) && !CCCIsCPP()) - Diag(clang::diag::err_drv_unknown_stdin_type); + Diag(IsCLMode() ? clang::diag::err_drv_unknown_stdin_type_clang_cl + : clang::diag::err_drv_unknown_stdin_type); Ty = types::TY_C; } else { // Otherwise lookup by extension. diff --git a/clang/test/Driver/cl-inputs.c b/clang/test/Driver/cl-inputs.c index d6ee520257d..066e0e32d9f 100644 --- a/clang/test/Driver/cl-inputs.c +++ b/clang/test/Driver/cl-inputs.c @@ -33,3 +33,11 @@ // WARN: warning: overriding '/TC' option with '/TP' // WARN: note: The last /TC or /TP option takes precedence over earlier instances // WARN-NOT: note + +// RUN: not %clang_cl - 2>&1 | FileCheck -check-prefix=STDIN %s +// STDIN: error: use /Tc or /Tp + +// RUN: %clang_cl -### /Tc - 2>&1 | FileCheck -check-prefix=STDINTc %s +// STDINTc: "-x" "c" + +void f(); |

