================
@@ -16445,11 +16450,18 @@ OMPClause *SemaOpenMP::ActOnOpenMPMessageClause(Expr
*ME,
SourceLocation LParenLoc,
SourceLocation EndLoc) {
assert(ME && "NULL expr in Message clause");
- if (!isa<StringLiteral>(ME)) {
+ QualType Type = ME->getType();
+ if ((!Type->isPointerType() && !Type->isArrayType()) ||
+ !Type->getPointeeOrArrayElementType()->isAnyCharacterType()) {
Diag(ME->getBeginLoc(), diag::warn_clause_expected_string)
<< getOpenMPClauseNameForDiag(OMPC_message);
return nullptr;
}
+
+ // Convert array type to pointer type if needed.
+ if (Type->isArrayType())
+ ME = SemaRef.DefaultFunctionArrayConversion(ME).get();
----------------
alexey-bataev wrote:
I don't think you need this check, there is another similar function
`DefaultLvalueConversion`, which will do the required conversion without extra
checks
https://github.com/llvm/llvm-project/pull/146405
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits