diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td index 5e66e752512d0..56a817892bbba 100644 --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -121,11 +121,12 @@ def InitPriorityDocs : Documentation { In C++, the order in which global variables are initialized across translation units is unspecified, unlike the ordering within a single translation unit. The ``init_priority`` attribute allows you to specify a relative ordering for the -initialization of objects declared at namespace scope in C++. The priority is -given as an integer constant expression between 101 and 65535 (inclusive). -Priorities outside of that range are reserved for use by the implementation. A -lower value indicates a higher priority of initialization. Note that only the -relative ordering of values is important. For example: +initialization of objects declared at namespace scope in C++ within a single +linked image on supported platforms. The priority is given as an integer constant +expression between 101 and 65535 (inclusive). Priorities outside of that range are +reserved for use by the implementation. A lower value indicates a higher priority +of initialization. Note that only the relative ordering of values is important. +For example: .. code-block:: c++ @@ -136,10 +137,16 @@ relative ordering of values is important. For example: ``Obj2`` will be initialized *before* ``Obj1`` despite the usual order of initialization being the opposite. +Note that this attribute does not control the initialization order of objects +across final linked image boundaries like shared objects and executables. + On Windows, ``init_seg(compiler)`` is represented with a priority of 200 and ``init_seg(library)`` is represented with a priority of 400. ``init_seg(user)`` uses the default 65535 priority. +On MachO platforms, this attribute also does not control the order of initialization +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. }];