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

Reply via email to