OpenMP: Reorder diagnostic in modify_call_for_omp_dispatch [PR119559]
gcc/ChangeLog: PR middle-end/119559 * gimplify.cc (modify_call_for_omp_dispatch): Reorder checks to avoid asserts and bogus diagnostic.
This commit is contained in:
parent
75a049483c
commit
de92ac6f11
1 changed files with 16 additions and 20 deletions
|
@ -3933,25 +3933,9 @@ modify_call_for_omp_dispatch (tree expr, tree dispatch_clauses,
|
|||
the split between early/late resolution, etc instead of the code
|
||||
as written by the user. */
|
||||
if (dispatch_interop)
|
||||
{
|
||||
for (tree t = dispatch_interop; t; t = TREE_CHAIN (t))
|
||||
if (OMP_CLAUSE_CODE (t) == OMP_CLAUSE_INTEROP)
|
||||
ninterop++;
|
||||
if (nappend < ninterop)
|
||||
{
|
||||
error_at (OMP_CLAUSE_LOCATION (dispatch_interop),
|
||||
"number of list items in %<interop%> clause (%d) "
|
||||
"exceeds the number of %<append_args%> items (%d) for "
|
||||
"%<declare variant%> candidate %qD",
|
||||
ninterop, nappend, fndecl);
|
||||
inform (dispatch_append_args
|
||||
? EXPR_LOCATION (TREE_PURPOSE (dispatch_append_args))
|
||||
: DECL_SOURCE_LOCATION (fndecl),
|
||||
"%<declare variant%> candidate %qD declared here",
|
||||
fndecl);
|
||||
ninterop = nappend;
|
||||
}
|
||||
}
|
||||
for (tree t = dispatch_interop; t; t = TREE_CHAIN (t))
|
||||
if (OMP_CLAUSE_CODE (t) == OMP_CLAUSE_INTEROP)
|
||||
ninterop++;
|
||||
if (dispatch_interop && !dispatch_device_num)
|
||||
{
|
||||
gcc_checking_assert (ninterop > 1);
|
||||
|
@ -3959,7 +3943,19 @@ modify_call_for_omp_dispatch (tree expr, tree dispatch_clauses,
|
|||
"the %<device%> clause must be present if the %<interop%> "
|
||||
"clause has more than one list item");
|
||||
}
|
||||
else if (dispatch_append_args)
|
||||
if (nappend < ninterop)
|
||||
{
|
||||
error_at (OMP_CLAUSE_LOCATION (dispatch_interop),
|
||||
"number of list items in %<interop%> clause (%d) "
|
||||
"exceeds the number of %<append_args%> items (%d) for "
|
||||
"%<declare variant%> candidate %qD", ninterop, nappend, fndecl);
|
||||
inform (dispatch_append_args
|
||||
? EXPR_LOCATION (TREE_PURPOSE (dispatch_append_args))
|
||||
: DECL_SOURCE_LOCATION (fndecl),
|
||||
"%<declare variant%> candidate %qD declared here", fndecl);
|
||||
ninterop = nappend;
|
||||
}
|
||||
if (dispatch_append_args)
|
||||
{
|
||||
tree *buffer = XALLOCAVEC (tree, nargs + nappend);
|
||||
tree arg = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
|
||||
|
|
Loading…
Add table
Reference in a new issue