Author: Douglas Yung Date: 2026-09-26T05:34:20Z New Revision: 18af9ef08eec59d1bce7b941f164ba3f866acf59
URL: https://github.com/llvm/llvm-project/commit/18af9ef08eec59d1bce7b941f164ba3f866acf59 DIFF: https://github.com/llvm/llvm-project/commit/18af9ef08eec59d1bce7b941f164ba3f866acf59.diff LOG: Revert "[clang][OpenMP] Only accept char strings in the message clause" (#226636) Reverts llvm/llvm-project#226080 The newly added test error_message.c is failing on the PS4 bot https://lab.llvm.org/buildbot/#/builders/144/builds/66294 Added: Modified: clang/docs/ReleaseNotes.md clang/lib/Sema/SemaOpenMP.cpp clang/test/OpenMP/error_message.cpp clang/test/OpenMP/parallel_message_messages.cpp Removed: clang/test/OpenMP/error_message.c ################################################################################ diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index cf7e5183b1a40..3c6acf353f93f 100644 --- a/clang/docs/ReleaseNotes.md +++ b/clang/docs/ReleaseNotes.md @@ -536,7 +536,6 @@ features cannot lower the translation-unit ABI level; - Fixed a constraint comparison bug in partial ordering. (#GH182671) - Fixed a rejected-valid case that used an explicit object parameter in an out-of-line definition of a nested class member. (#GH136472) - Fixed an assertion on omp taskloop transparent (#GH197162) -- Fixed an assertion failure and a garbled diagnostic when the `message` clause of `#pragma omp error` was given a string literal that is not of `char` type, such as a wide string literal. Such literals are now diagnosed and ignored. (#GH140338) - Fixed a bug where `__func__`, `__PRETTY_FUNCTION__` and `__FUNCTION__` were not resolving to the proper function when inside a lambda return type (#GH211811) - Fixed USR generation for declarations whose signature mentions a class-type non-type template parameter. (#GH212351) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 0c97400e31a8d..4b49a75d1f84b 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -19251,10 +19251,8 @@ OMPClause *SemaOpenMP::ActOnOpenMPMessageClause(Expr *ME, SourceLocation EndLoc) { assert(ME && "NULL expr in Message clause"); QualType Type = ME->getType(); - // OpenMP 5.1 [2.5.4, error Directive] - // msg-string is a string of const char * type. if ((!Type->isPointerType() && !Type->isArrayType()) || - !Type->getPointeeOrArrayElementType()->isCharType()) { + !Type->getPointeeOrArrayElementType()->isAnyCharacterType()) { Diag(ME->getBeginLoc(), diag::warn_clause_expected_string) << getOpenMPClauseNameForDiag(OMPC_message) << 0; return nullptr; diff --git a/clang/test/OpenMP/error_message.c b/clang/test/OpenMP/error_message.c deleted file mode 100644 index 82c533d54b631..0000000000000 --- a/clang/test/OpenMP/error_message.c +++ /dev/null @@ -1,33 +0,0 @@ -// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=51 -ferror-limit 100 %s -// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=60 -ferror-limit 100 %s - -// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=51 -ferror-limit 100 %s -// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=60 -ferror-limit 100 %s - -// GH140338 -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(L"") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(L"bar") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-warning@+1 {{WARNING}} -#pragma omp error severity(warning) message(L"bar") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(1) -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(1.2) -#pragma omp error message("foo") // expected-error {{foo}} -#pragma omp error message(u8"foo") // expected-error {{foo}} - -int foo(int i, const char *msg) { -// expected-warning@+2 {{expected string literal in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(msg) -// expected-warning@+1 {{expected string in 'clause message' - ignoring}} -#pragma omp error at(execution) message(L"bar") // no error - return i; -} diff --git a/clang/test/OpenMP/error_message.cpp b/clang/test/OpenMP/error_message.cpp index fb615e50c2244..e96562eaa023f 100644 --- a/clang/test/OpenMP/error_message.cpp +++ b/clang/test/OpenMP/error_message.cpp @@ -4,35 +4,9 @@ // RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=51 -ferror-limit 100 %s -Wuninitialized // RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=60 -ferror-limit 100 %s -Wuninitialized -// RUN: %clang_cc1 -verify -std=c++20 -fopenmp -fopenmp-version=60 -ferror-limit 100 %s -Wuninitialized - // Test outside of an executable context. #pragma omp error severity(warning) message("msg") at(compilation) // expected-warning {{msg}} -// GH140338 -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(L"") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(L"msg") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(u"msg") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-error@+1 {{ERROR}} -#pragma omp error message(U"msg") -// expected-warning@+2 {{expected string in 'clause message' - ignoring}} -// expected-warning@+1 {{WARNING}} -#pragma omp error severity(warning) message(L"msg") -#ifdef __cpp_char8_t -// expected-warning@+5 {{expected string in 'clause message' - ignoring}} -// expected-error@+4 {{ERROR}} -#else -// expected-error@+2 {{msg}} -#endif -#pragma omp error message(u8"msg") - template <class T> T tmain(T argc) { if (argc) @@ -228,8 +202,5 @@ if (1) label2: #pragma omp error // expected-error {{'#pragma omp error' cannot be an immediate substatement}} -// expected-warning@+1 {{expected string in 'clause message' - ignoring}} -#pragma omp error at(execution) message(L"msg") // no error - return tmain(argc);// expected-note {{in instantiation of function template specialization 'tmain<int>' requested here}} } diff --git a/clang/test/OpenMP/parallel_message_messages.cpp b/clang/test/OpenMP/parallel_message_messages.cpp index 1ec9a37a1b7fa..ea8fa23ef5e53 100644 --- a/clang/test/OpenMP/parallel_message_messages.cpp +++ b/clang/test/OpenMP/parallel_message_messages.cpp @@ -62,7 +62,7 @@ T tmain(T argc, S **argv) { #pragma omp parallel message("hello" " world") // Message clause with wide string literal - #pragma omp parallel message(L"wide string") // expected-warning {{expected string in 'clause message' - ignoring}} + #pragma omp parallel message(L"wide string") // Message clause with UTF-8 string literal #pragma omp parallel message(u8"utf8 string") _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
