diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 70b5773f95b08..32f72e8da960e 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -535,10 +535,6 @@ def TargetWindowsArm64EC : TargetSpec { let CustomCode = [{ Target.getTriple().isWindowsArm64EC() }]; } -def TargetSupportsInitPriority : TargetSpec { - let CustomCode = [{ !Target.getTriple().isOSzOS() }]; -} - class TargetSpecificSpelling spellings> { TargetSpec Target = target; list Spellings = spellings; @@ -3323,7 +3319,7 @@ def WorkGroupSizeHint : InheritableAttr { let Documentation = [Undocumented]; } -def InitPriority : InheritableAttr, TargetSpecificAttr { +def InitPriority : InheritableAttr { let Spellings = [GCC<"init_priority", /*AllowInC*/0>]; let Args = [UnsignedArgument<"Priority">]; let Subjects = SubjectList<[Var], ErrorDiag>; diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index 87b9053be7cb6..6eae86b7f7f16 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -158,7 +158,7 @@ On MachO platforms, this attribute also does not control the order of initializa across translation units, where it only affects the order within a single TU. This attribute is only supported for C++ and Objective-C++ and is ignored in -other language modes. Currently, this attribute is not implemented on z/OS. +other language modes. }]; } diff --git a/clang/test/SemaCXX/init-priority-attr.cpp b/clang/test/SemaCXX/init-priority-attr.cpp index c5fab7b42502e..d59f1a5a2a231 100644 --- a/clang/test/SemaCXX/init-priority-attr.cpp +++ b/clang/test/SemaCXX/init-priority-attr.cpp @@ -1,8 +1,6 @@ -// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -fsyntax-only -verify %s -// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -fsyntax-only -DSYSTEM -verify %s -// RUN: %clang_cc1 -triple=x86_64-unknown-unknown -fsyntax-only -DNOERROR -Wno-error=init-priority-reserved -verify %s -// RUN: %clang_cc1 -triple=s390x-none-zos -fsyntax-only -verify=unknown %s -// RUN: %clang_cc1 -triple=s390x-none-zos -fsyntax-only -DSYSTEM -verify=unknown-system %s +// RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -DSYSTEM -verify %s +// RUN: %clang_cc1 -fsyntax-only -DNOERROR -Wno-error=init-priority-reserved -verify %s #if defined(SYSTEM) #5 "init-priority-attr.cpp" 3 // system header @@ -28,13 +26,10 @@ extern Two koo[]; // unknown-system-no-diagnostics Two foo __attribute__((init_priority(101))) ( 5, 6 ); -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two loo __attribute__((init_priority(65535))) ( 5, 6 ); -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two goo __attribute__((init_priority(2,3))) ( 5, 6 ); // expected-error {{'init_priority' attribute takes one argument}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two coo[2] __attribute__((init_priority(100))); #if !defined(SYSTEM) @@ -43,27 +38,19 @@ Two coo[2] __attribute__((init_priority(100))); #else // defined(NOERROR) // expected-warning@-5 {{requested 'init_priority' 100 is reserved for internal use}} #endif // !defined(NOERROR) - // unknown-warning@-7 {{unknown attribute 'init_priority' ignored}} #endif // !defined(SYSTEM) - Two zoo[2] __attribute__((init_priority(-1))); // expected-error {{'init_priority' attribute requires integer constant between 0 and 65535 inclusive}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two boo[2] __attribute__((init_priority(65536))); // expected-error {{'init_priority' attribute requires integer constant between 0 and 65535 inclusive}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two koo[4] __attribute__((init_priority(1.13))); // expected-error {{'init_priority' attribute requires an integer constant}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} Two func() __attribute__((init_priority(1001))); // expected-error {{'init_priority' attribute only applies to variables}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} int i __attribute__((init_priority(1001))); // expected-error {{can only use 'init_priority' attribute on file-scope definitions of objects of class type}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} int main() { Two foo __attribute__((init_priority(1001))); // expected-error {{can only use 'init_priority' attribute on file-scope definitions of objects of class type}} -// unknown-warning@-1 {{unknown attribute 'init_priority' ignored}} } struct S1 {} s1;