forked from OSchip/llvm-project
[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:
parent
e0e7a8ae58
commit
3cabf73270
|
@ -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]
|
||||
|
|
|
@ -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];
|
Loading…
Reference in New Issue