From 640d10c8b064d5fdb7f8eb345a8f5050e71a02b4 Mon Sep 17 00:00:00 2001 From: Justin Lebar Date: Thu, 7 Sep 2017 18:37:16 +0000 Subject: [PATCH] [CUDA] When compilation fails, print the compilation mode. Summary: That is, instead of "1 error generated", we now say "1 error generated when compiling for sm_35". This (partially) solves a usability foogtun wherein e.g. users call a function that's only defined on sm_60 when compiling for sm_35, and they get an unhelpful error message. Reviewers: tra Subscribers: sanjoy, cfe-commits Differential Revision: https://reviews.llvm.org/D37548 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312736 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Frontend/CompilerInstance.cpp | 13 +++++++++++-- test/SemaCUDA/error-includes-mode.cu | 7 +++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 test/SemaCUDA/error-includes-mode.cu diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 9a4bcc2722..128de2840e 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -1003,8 +1003,17 @@ bool CompilerInstance::ExecuteAction(FrontendAction &Act) { OS << " and "; if (NumErrors) OS << NumErrors << " error" << (NumErrors == 1 ? "" : "s"); - if (NumWarnings || NumErrors) - OS << " generated.\n"; + if (NumWarnings || NumErrors) { + OS << " generated"; + if (getLangOpts().CUDA) { + if (!getLangOpts().CUDAIsDevice) { + OS << " when compiling for host"; + } else { + OS << " when compiling for " << getTargetOpts().CPU; + } + } + OS << ".\n"; + } } if (getFrontendOpts().ShowStats) { diff --git a/test/SemaCUDA/error-includes-mode.cu b/test/SemaCUDA/error-includes-mode.cu new file mode 100644 index 0000000000..257fdeceef --- /dev/null +++ b/test/SemaCUDA/error-includes-mode.cu @@ -0,0 +1,7 @@ +// RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck --check-prefix HOST %s +// RUN: not %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_35 \ +// RUN: -fcuda-is-device -fsyntax-only %s 2>&1 | FileCheck --check-prefix SM35 %s + +// HOST: 1 error generated when compiling for host +// SM35: 1 error generated when compiling for sm_35 +error; -- 2.40.0