https://github.com/dyung created https://github.com/llvm/llvm-project/pull/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 >From 3441f365f012173b42c8bedb22cae70ab31d7dd8 Mon Sep 17 00:00:00 2001 From: Douglas Yung <[email protected]> Date: Fri, 25 Sep 2026 21:56:25 -0700 Subject: [PATCH] Revert "[clang][OpenMP] Only accept char strings in the message clause (#226080)" This reverts commit 5eb23d2ae9f1dab06a31e5f9d7d64fa23a775604. --- clang/docs/ReleaseNotes.md | 1 - clang/lib/Sema/SemaOpenMP.cpp | 4 +-- clang/test/OpenMP/error_message.c | 33 ------------------- clang/test/OpenMP/error_message.cpp | 29 ---------------- .../test/OpenMP/parallel_message_messages.cpp | 2 +- 5 files changed, 2 insertions(+), 67 deletions(-) delete mode 100644 clang/test/OpenMP/error_message.c diff --git a/clang/docs/ReleaseNotes.md b/clang/docs/ReleaseNotes.md index cf7e5183b1a406..3c6acf353f93f6 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 0c97400e31a8d7..4b49a75d1f84be 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 82c533d54b631c..00000000000000 --- 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 fb615e50c22445..e96562eaa023fc 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 1ec9a37a1b7fa9..ea8fa23ef5e532 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
