On Fri, Nov 11, 2016 at 03:43:02PM -0800, Cesar Philippidis wrote:
> + error_at (OMP_CLAUSE_LOCATION (c),
> + "%qs specifies a conflicting level of parallelism",
> + omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
> + inform (OMP_CLAUSE_LOCATION (c_level),
> + "... to the previous %qs clause here",
I think the '... ' part is unnecessary.
Perhaps word it better like we word errors/warnings for mismatched
attributes etc.?
> + incompatible:
> + if (c_diag != NULL_TREE)
> + error_at (OMP_CLAUSE_LOCATION (c_diag),
> + "incompatible %qs clause when applying"
> + " %<%s%> to %qD, which has already been"
> + " marked as an accelerator routine",
> + omp_clause_code_name[OMP_CLAUSE_CODE (c_diag)],
> + routine_str, fndecl);
> + else if (c_diag_p != NULL_TREE)
> + error_at (loc,
> + "missing %qs clause when applying"
> + " %<%s%> to %qD, which has already been"
> + " marked as an accelerator routine",
> + omp_clause_code_name[OMP_CLAUSE_CODE (c_diag_p)],
> + routine_str, fndecl);
> + else
> + gcc_unreachable ();
> + if (c_diag_p != NULL_TREE)
> + inform (OMP_CLAUSE_LOCATION (c_diag_p),
> + "... with %qs clause here",
> + omp_clause_code_name[OMP_CLAUSE_CODE (c_diag_p)]);
Again, I think this usually would be something like "previous %qs clause"
or similar in the inform. Generally, I think the error message should
be self-contained and infom should be just extra information, rather than
error containing first half of the diagnostic message and inform the second
one. E.g. for translations, while such a sentence crossing the two
diagnostic routines might make sense in english, it might look terrible in
other languages.
> + else
> + {
> + /* In the front ends, we don't preserve location information for the
> + OpenACC routine directive itself. However, that of c_level_p
> + should be close. */
> + location_t loc_routine = OMP_CLAUSE_LOCATION (c_level_p);
> + inform (loc_routine, "... without %qs clause near to here",
> + omp_clause_code_name[OMP_CLAUSE_CODE (c_diag)]);
> + }
> + /* Incompatible. */
> + return -1;
> + }
> +
> + return 0;
Jakub