\cchapter{Feature Deprecations and Updates in Examples}{deprecated_features} \label{chap:deprecated_features} \label{sec:deprecated_features} \index{deprecated features} \newcommand\tabpcont[1]{\multicolumn{2}{l}{\small\slshape table continued #1 page}} \newcommand\tabpheader{\textbf{Version} & \textbf{Deprecated Feature} & \textbf{Replacement}} \newcommand\tabuheader{\textbf{Example Name} & \textbf{Earlier Version} & \textbf{Feature Updated}} \newcommand\dpftable[1]{ \renewcommand{\arraystretch}{1.0} \tablefirsthead{% \hline\\[-2ex] \tabuheader\\[2pt] \hline\\[-2ex] } \tablehead{% \tabpcont{from previous}\\[2pt] \hline\\[-2ex] \tabuheader\\[2pt] \hline\\[-2ex] } \tabletail{% \hline\\[-2.5ex] \tabpcont{on next}\\ } \tablelasttail{\hline\\[-1ex]} \tablecaption{Updated Examples for Features Deprecated in Version #1\label{tab:Updated Examples #1}} } Deprecation of features began in OpenMP 5.0. Examples that use a deprecated feature have been updated with an equivalent replacement feature. Table~\ref{tab:Deprecated Features} summarizes deprecated features and their replacements in each version. Affected examples are updated accordingly and listed in Section~\ref{sec:Updated Examples}. \nolinenumbers \renewcommand{\arraystretch}{1.4} \tablefirsthead{% \hline \tabpheader\\ \hline\\[-3.5ex] } \tablehead{% \tabpcont{from previous}\\ \hline \tabpheader\\ \hline\\[-3ex] } \tabletail{% \hline\\[-4ex] \tabpcont{on next}\\ } \tablelasttail{\hline\\[-2ex]} \tablecaption{Deprecated Features and Their Replacements\label{tab:Deprecated Features}} \begin{supertabular}{p{0.4in} p{2.3in} p{2.2in}} 6.0 & \kcode{declare reduction(}\plc{reduction-id}: \plc{typename-list}: \plc{combiner}\kcode{)} & \kcode{declare reduction(}\plc{reduction-id}: \plc{typename-list}\kcode{)} \kcode{combiner(\plc{combiner-exp})} \\ \hline 5.2 & \kcode{default} clause on metadirectives & \kcode{otherwise} clause \\ 5.2 & delimited \kcode{declare target} directive for C/C++ & \kcode{begin declare target} directive \\ 5.2 & \kcode{to} clause on \kcode{declare target} directive & \kcode{enter} clause \\ 5.2 & non-argument \kcode{destroy} clause on \kcode{depobj} construct & \kcode{destroy(\plc{argument})} \\ 5.2 & \kcode{allocate} directive for Fortran \bcode{ALLOCATE} statements & \kcode{allocators} directive \\ 5.2 & \kcode{depend} clause on \kcode{ordered} construct & \kcode{doacross} clause \\ 5.2 & \kcode{linear(\plc{modifier(list): linear-step})} clause & \kcode{linear(\plc{list:} step(\plc{linear-step})\plc{, modifier})} clause \\ \hline 5.1 & \kcode{master} construct & \kcode{masked} construct \\ 5.1 & \kcode{master} affinity policy & \kcode{primary} affinity policy \\ \hline 5.0 & \kcode{omp_lock_hint_*} constants & \kcode{omp_sync_hint_*} constants \\[2pt] \end{supertabular} \linenumbers These replacements appear in examples that illustrate, otherwise, earlier features. When using a compiler that is compliant with a version prior to the indicated version, the earlier form of an example for a previous version is listed as a reference. \newpage \section{Updated Examples for Different Versions} \label{sec:Updated Examples} The following tables list the updated examples for different versions as a result of feature deprecation. The \emph{Earlier Version} column of the tables shows the version tag of the earlier version. It also shows the prior name of an example when it has been renamed. Table~\ref{tab:Updated Examples 6.0} lists the updated examples for features deprecated in OpenMP 6.0 in the Examples Document Version \href{https://github.com/OpenMP/Examples/tree/v6.0}{6.0}. The \emph{Earlier Version} column of the table lists the earlier version tags of the examples that can be found in the Examples Document Version \href{https://github.com/OpenMP/Examples/tree/v5.2}{5.2}. \index{clauses!combiner@\kcode{combiner}} \index{combiner clause@\kcode{combiner} clause} \nolinenumbers \dpftable{6.0} \begin{supertabular}{p{1.7in} p{1.1in} p{2.2in}} \hexentry{udr.1}[f90]{4.0} & \plc{combiner} expression in \kcode{declare} \\ \hexentry{udr.2}[f90]{4.0} & \kcode{reduction} directive changed to use \\ \hexentry{udr.3}[f90]{4.0} & \kcode{combiner} clause \\ \hexentry[f90]{udr.4}{4.0} & \\ \hexentry[cpp]{udr.5}{4.0} & \\ \hexentry[cpp]{udr.6}{4.0} & \\[2pt] \end{supertabular} \linenumbers Table~\ref{tab:Updated Examples 5.2} lists the updated examples for features deprecated in OpenMP 5.2 in the Examples Document Version \examplesref{5.2}. The \emph{Earlier Version} column of the table lists the earlier version tags of the examples that can be found in the Examples Document Version \examplesref{5.1}. \index{clauses!default@\kcode{default}} \index{clauses!otherwise@\kcode{otherwise}} \index{clauses!to@\kcode{to}} \index{clauses!enter@\kcode{enter}} \index{clauses!depend@\kcode{depend}} \index{clauses!doacross@\kcode{doacross}} \index{clauses!linear@\kcode{linear}} \index{clauses!destroy@\kcode{destroy}} \index{default clause@\kcode{default} clause} \index{otherwise clause@\kcode{otherwise} clause} \index{to clause@\kcode{to} clause} \index{enter clause@\kcode{enter} clause} \index{depend clause@\kcode{depend} clause} \index{doacross clause@\kcode{doacross} clause} \index{linear clause@\kcode{linear} clause} \index{destroy clause@\kcode{destroy} clause} \index{directives!begin declare target@\kcode{begin declare target}} \index{begin declare target directive@\kcode{begin declare target} directive} \index{allocate directive@\kcode{allocate} directive} \index{allocators directive@\kcode{allocators} directive} \nolinenumbers \dpftable{5.2} \begin{supertabular}{p{1.7in} p{1.2in} p{2.1in}} \hexentry{error.1}[f90]{5.1} & \kcode{default} clause on metadirectives \\ \hexentry{metadirective.1}[f90]{5.0} & replaced with \kcode{otherwise} clause \\ \hexentry{metadirective.2}[f90]{5.0} & \\ \hexentry{metadirective.3}[f90]{5.0} & \\ \hexentry{metadirective.4}[f90]{5.1} & \\ \hexentry{target_ptr_map.4}{5.1} & \\ \hexentry{target_ptr_map.5}[f90]{5.1} & \\[2pt] \hline\\[-2ex] \hexentry[f90]{array_shaping.1}{5.0} & \kcode{to} clause on \kcode{declare target} \\ \hexentry{target_reverse_offload.7}{5.0} & directive replaced with \kcode{enter} clause \\ \hexentry{target_task_reduction.1}[f90]{5.1} & \\ \hexentry{target_task_reduction.2a}[f90]{5.0} & \\ \hexentry{target_task_reduction.2b}[f90]{5.1} &\\[2pt] \hline\\[-2ex] \hexentry{array_shaping.1}{5.0} & delimited \kcode{declare target} \\ \hexentry{async_target.1}{4.0} & directive replaced with \\ \hexentry{async_target.2}{4.0} & \kcode{begin declare target} \\ \hexentry{declare_target.1}{4.0} & directive for C/C++ \\ \hexentry[cpp]{declare_target.2c}{4.0} & \\ \hexentry{declare_target.3}{4.0} & \\ \hexentry{declare_target.4}{4.0} & \\ \hexentry{declare_target.5}{4.0} & \\ \hexentry{declare_target.6}{4.0} & \\ \hexentry{declare_variant.1}{5.0} & \\ \hexentry{device.1}{4.0} & \\ \hexentry{metadirective.3}{5.0} & \\ \hexentry{target_ptr_map.2}{5.0} & \\ \hexentry{target_ptr_map.3a}{5.0} & \\ \hexentry{target_ptr_map.3b}{5.0} & \\ \hexentry{target_struct_map.1}{5.0} & \\ \hexentry[cpp]{target_struct_map.2}{5.0} & \\ \hexentry{target_struct_map.3}{5.0} & \\ \hexentry{target_struct_map.4}{5.0} & \\[2pt] \hline\\[-2ex] \hexentry{doacross.1}[f90]{4.5} & \kcode{depend} clause on \kcode{ordered} \\ \hexentry{doacross.2}[f90]{4.5} & construct replaced with \kcode{doacross} \\ \hexentry{doacross.3}[f90]{4.5} & clause \\ \hexentry{doacross.4}[f90]{4.5} & \\[2pt] \hline\\[-2ex] \hexentry[cpp]{linear_modifier.1}[f90]{4.5} & modifier syntax change for \kcode{linear} \\ \hexentry[cpp]{linear_modifier.2}[f90]{4.5} & clause on \kcode{declare simd} directive \\ \hexentry{linear_modifier.3}[f90]{4.5} & \\[2pt] \hline\\[-2ex] \hexentry[f90]{allocators.1}{5.0} & \kcode{allocate} directive replaced with \kcode{allocators} directive for Fortran \bcode{allocate} statements \\[2pt] \hline\\[-2ex] \hexentry{depobj.1}[f90]{5.0} & argument added to \kcode{destroy} clause on \kcode{depobj} construct \\[2pt] \end{supertabular} \linenumbers \newpage Table~\ref{tab:Updated Examples 5.1} lists the updated examples for features deprecated in OpenMP 5.1 in the Examples Document Version \examplesref{5.1}. The \emph{Earlier Version} column of the table lists the earlier version tags and prior names of the examples that can be found in the Examples Document Version \examplesref{5.0.1}. \index{affinity!master policy@\kcode{master} policy} \index{affinity!primary policy@\kcode{primary} policy} \index{constructs!master@\kcode{master}} \index{constructs!masked@\kcode{masked}} \index{master construct@\kcode{master} construct} \index{masked construct@\kcode{masked} construct} \nolinenumbers \dpftable{5.1} \begin{supertabular}{p{1.8in} p{1.4in} p{1.8in}} \hexentry{affinity.5}[f]{4.0} & \kcode{master} affinity policy replaced with \kcode{primary} policy \\[2pt] \hline\\[-2ex] \hexentry{async_target.3}[f90]{5.0} & \kcode{master} construct replaced \\ \hexentry{cancellation.2}[f90]{4.0} & with \kcode{masked} construct \\ \hexentry{copyprivate.2}[f]{3.0} & \\ \hexentry[f]{fort_sa_private.5}{3.0} & \\ \hexentry{lock_owner.1}[f]{3.0} & \\ \hexmentry{masked.1}[f]{3.0}{master.1} & \\ \hexmentry{parallel_masked_taskloop.1}[f90]{5.0}{parallel_master_taskloop.1} &\\ \hexentry{reduction.6}[f]{3.0} & \\ \hexentry{target_task_reduction.1}[f90]{5.0} & \\ \hexentry{target_task_reduction.2b}[f90]{5.0} & \\ \hexentry{taskloop_simd_reduction.1}[f90]{5.0} & \\ \hexentry{task_detach.1}[f90]{5.0} & \\[2pt] \end{supertabular} \linenumbers Table~\ref{tab:Updated Examples 5.0} lists the updated examples for features deprecated in OpenMP 5.0 in the Examples Document Version \examplesref{5.1}. The \emph{Earlier Version} column of the table lists the earlier version tags of the examples that can be found in the Examples Document Version \examplesref{5.0.1}. \nolinenumbers \dpftable{5.0} \begin{supertabular}{p{1.6in} p{1.3in} p{2.1in}} \hexentry{critical.2}[f]{4.5} & \kcode{omp_lock_hint_*} constants \\ \hexentry[cpp]{init_lock_with_hint.1}[f]{4.5} & replaced with \kcode{omp_sync_hint_*} constants \\[2pt] \end{supertabular} \linenumbers