From e8de81fa9ab388e01151bb232a5c35a8a30d32a2 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Fri, 22 Feb 2019 17:16:50 +0000 Subject: [PATCH] Revert "[OPENMP] Delayed diagnostics for VLA support." This reverts commit r354679 to fix the problem with the Windows buildbots git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@354680 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaType.cpp | 16 +++++++++------- test/OpenMP/target_vla_messages.cpp | 5 +---- test/SemaCUDA/vla.cu | 11 ++--------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index f314cb0abe..090d9431be 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -2250,13 +2250,15 @@ QualType Sema::BuildArrayType(QualType T, ArrayType::ArraySizeModifier ASM, } if (T->isVariableArrayType() && !Context.getTargetInfo().isVLASupported()) { - // CUDA device code and some other targets don't support VLAs. - targetDiag(Loc, (getLangOpts().CUDA && getLangOpts().CUDAIsDevice) - ? diag::err_cuda_vla - : diag::err_vla_unsupported) - << ((getLangOpts().CUDA && getLangOpts().CUDAIsDevice) - ? CurrentCUDATarget() - : CFT_InvalidTarget); + if (getLangOpts().CUDA) { + // CUDA device code doesn't support VLAs. + CUDADiagIfDeviceCode(Loc, diag::err_cuda_vla) << CurrentCUDATarget(); + } else if (!getLangOpts().OpenMP || + shouldDiagnoseTargetSupportFromOpenMP()) { + // Some targets don't support VLAs. + Diag(Loc, diag::err_vla_unsupported); + return QualType(); + } } // If this is not C99, extwarn about VLA's and C99 array size modifiers. diff --git a/test/OpenMP/target_vla_messages.cpp b/test/OpenMP/target_vla_messages.cpp index 30a2751724..b744081e98 100644 --- a/test/OpenMP/target_vla_messages.cpp +++ b/test/OpenMP/target_vla_messages.cpp @@ -47,7 +47,7 @@ void target_template(int arg) { #pragma omp target { #ifdef NO_VLA - // expected-error@+2 2 {{variable length arrays are not supported for the current target}} + // expected-error@+2 {{variable length arrays are not supported for the current target}} #endif T vla[arg]; } @@ -73,9 +73,6 @@ void target(int arg) { } } -#ifdef NO_VLA - // expected-note@+2 {{in instantiation of function template specialization 'target_template' requested here}} -#endif target_template(arg); } diff --git a/test/SemaCUDA/vla.cu b/test/SemaCUDA/vla.cu index cf3054cd8e..b65ae5e5fe 100644 --- a/test/SemaCUDA/vla.cu +++ b/test/SemaCUDA/vla.cu @@ -1,9 +1,5 @@ // RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -fcuda-is-device -verify %s -// RUN: %clang_cc1 -triple x86_64-unknown-linux -verify -DHOST %s - -#ifndef __CUDA_ARCH__ -// expected-no-diagnostics -#endif +// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -verify -DHOST %s #include "Inputs/cuda.h" @@ -12,10 +8,7 @@ void host(int n) { } __device__ void device(int n) { - int x[n]; -#ifdef __CUDA_ARCH__ - // expected-error@-2 {{cannot use variable-length arrays in __device__ functions}} -#endif + int x[n]; // expected-error {{cannot use variable-length arrays in __device__ functions}} } __host__ __device__ void hd(int n) { -- 2.50.1