forked from OSchip/llvm-project
[OpenMP] Error when trying to offload to an unsupported architecture
Summary: Throw an error when offloading is unsupported for a particular target architecture. Reviewers: sfantao, caomhin, carlo.bertolli, ABataev, Hahnfeld Reviewed By: ABataev Subscribers: cfe-commits, rengolin Differential Revision: https://reviews.llvm.org/D32035 llvm-svn: 310307
This commit is contained in:
parent
e3b0a19d4f
commit
ef5e106fc1
|
@ -2321,7 +2321,14 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
|
|||
for (unsigned i = 0; i < A->getNumValues(); ++i) {
|
||||
llvm::Triple TT(A->getValue(i));
|
||||
|
||||
if (TT.getArch() == llvm::Triple::UnknownArch)
|
||||
if (TT.getArch() == llvm::Triple::UnknownArch ||
|
||||
!(TT.getArch() == llvm::Triple::ppc ||
|
||||
TT.getArch() == llvm::Triple::ppc64 ||
|
||||
TT.getArch() == llvm::Triple::ppc64le ||
|
||||
TT.getArch() == llvm::Triple::nvptx ||
|
||||
TT.getArch() == llvm::Triple::nvptx64 ||
|
||||
TT.getArch() == llvm::Triple::x86 ||
|
||||
TT.getArch() == llvm::Triple::x86_64))
|
||||
Diags.Report(clang::diag::err_drv_invalid_omp_target) << A->getValue(i);
|
||||
else
|
||||
Opts.OMPTargetTriples.push_back(TT);
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
// RUN: not %clang_cc1 -fopenmp -std=c++11 -triple nvptx64-nvidia-cuda -o - %s 2>&1 | FileCheck --check-prefix CHECK-UNSUPPORTED-HOST-TARGET %s
|
||||
// RUN: not %clang_cc1 -fopenmp -std=c++11 -triple nvptx-nvidia-cuda -o - %s 2>&1 | FileCheck --check-prefix CHECK-UNSUPPORTED-HOST-TARGET %s
|
||||
// CHECK-UNSUPPORTED-HOST-TARGET: error: The target '{{nvptx64-nvidia-cuda|nvptx-nvidia-cuda}}' is not a supported OpenMP host target.
|
||||
// RUN: not %clang_cc1 -fopenmp -std=c++11 -fopenmp-targets=hexagon-linux-gnu -o - %s 2>&1 | FileCheck --check-prefix CHECK-UNSUPPORTED-DEVICE-TARGET %s
|
||||
// CHECK-UNSUPPORTED-DEVICE-TARGET: OpenMP target is invalid: 'hexagon-linux-gnu'
|
||||
|
||||
void foo() {
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue