[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.

Reviewed By: ABataev

Differential Revision: https://reviews.llvm.org/D48735

llvm-svn: 335911
This commit is contained in:
Joel E. Denny 2018-06-28 19:54:49 +00:00
parent e0e7a8ae58
commit 3cabf73270
2 changed files with 12 additions and 1 deletions

View File

@ -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]

View File

@ -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];