From 5026a3c6f0d8ff9d16e1809928264300d9569fb7 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Thu, 28 Jun 2018 19:46:10 +0000 Subject: [PATCH] [OPENMP] Fix incomplete type check for array reductions A reduction for an incomplete array type used to produce an assert fail during codegen. Now it produces a diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@335907 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaOpenMP.cpp | 2 +- test/OpenMP/parallel_reduction_messages.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/OpenMP/parallel_reduction_messages.c diff --git a/lib/Sema/SemaOpenMP.cpp b/lib/Sema/SemaOpenMP.cpp index 7da9df90ac..6fb0125e6e 100644 --- a/lib/Sema/SemaOpenMP.cpp +++ b/lib/Sema/SemaOpenMP.cpp @@ -10335,7 +10335,7 @@ static bool actOnOMPReductionKindClause( // OpenMP [2.9.3.3, Restrictions, C/C++, p.3] // A variable that appears in a private clause must not have an incomplete // type or a reference type. - if (S.RequireCompleteType(ELoc, Type, + if (S.RequireCompleteType(ELoc, D->getType(), diag::err_omp_reduction_incomplete_type)) continue; // OpenMP [2.14.3.6, reduction clause, Restrictions] diff --git a/test/OpenMP/parallel_reduction_messages.c b/test/OpenMP/parallel_reduction_messages.c new file mode 100644 index 0000000000..f88f8e0564 --- /dev/null +++ b/test/OpenMP/parallel_reduction_messages.c @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -verify -fopenmp -ferror-limit 150 -o - %s + +int incomplete[]; + +void test() { +#pragma omp parallel reduction(+ : incomplete) // expected-error {{a reduction list item with incomplete type 'int []'}} + ; +} + +// complete to suppress an additional warning, but it's too late for pragmas +int incomplete[3]; -- 2.50.1