@@ -176,7 +176,7 @@ inline uint32_t &lookupImpl(uint32_t state::ICVStateTy::*Var,
176176 return TeamState.ICVState .*Var;
177177}
178178
179- __attribute__ (( always_inline, flatten)) inline uint32_t &
179+ [[gnu:: always_inline, gnu:: flatten]] inline uint32_t &
180180lookup32 (ValueKind Kind, bool IsReadonly, IdentTy *Ident, bool ForceTeamState) {
181181 switch (Kind) {
182182 case state::VK_NThreads:
@@ -218,7 +218,7 @@ lookup32(ValueKind Kind, bool IsReadonly, IdentTy *Ident, bool ForceTeamState) {
218218 __builtin_unreachable ();
219219}
220220
221- __attribute__ (( always_inline, flatten)) inline void *&
221+ [[gnu:: always_inline, gnu:: flatten]] inline void *&
222222lookupPtr (ValueKind Kind, bool IsReadonly, bool ForceTeamState) {
223223 switch (Kind) {
224224 case state::VK_ParallelRegionFn:
@@ -232,47 +232,45 @@ lookupPtr(ValueKind Kind, bool IsReadonly, bool ForceTeamState) {
232232// / A class without actual state used to provide a nice interface to lookup and
233233// / update ICV values we can declare in global scope.
234234template <typename Ty, ValueKind Kind> struct Value {
235- __attribute__ (( flatten, always_inline)) operator Ty () {
235+ [[gnu:: flatten, gnu:: always_inline]] operator Ty () {
236236 return lookup (/* IsReadonly */ true , /* IdentTy */ nullptr ,
237237 /* ForceTeamState */ false );
238238 }
239239
240- __attribute__ (( flatten, always_inline)) Value &operator =(const Ty &Other) {
240+ [[gnu:: flatten, gnu:: always_inline]] Value &operator =(const Ty &Other) {
241241 set (Other, /* IdentTy */ nullptr );
242242 return *this ;
243243 }
244244
245- __attribute__ (( flatten, always_inline)) Value &operator ++() {
245+ [[gnu:: flatten, gnu:: always_inline]] Value &operator ++() {
246246 inc (1 , /* IdentTy */ nullptr );
247247 return *this ;
248248 }
249249
250- __attribute__ (( flatten, always_inline)) Value &operator --() {
250+ [[gnu:: flatten, gnu:: always_inline]] Value &operator --() {
251251 inc (-1 , /* IdentTy */ nullptr );
252252 return *this ;
253253 }
254254
255- __attribute__ (( flatten, always_inline)) void
255+ [[gnu:: flatten, gnu:: always_inline]] void
256256 assert_eq (const Ty &V, IdentTy *Ident = nullptr ,
257257 bool ForceTeamState = false ) {
258258 ASSERT (lookup (/* IsReadonly */ true , Ident, ForceTeamState) == V, nullptr );
259259 }
260260
261261private:
262- __attribute__ (( flatten, always_inline)) Ty &
262+ [[gnu:: flatten, gnu:: always_inline]] Ty &
263263 lookup (bool IsReadonly, IdentTy *Ident, bool ForceTeamState) {
264264 Ty &t = lookup32 (Kind, IsReadonly, Ident, ForceTeamState);
265265 return t;
266266 }
267267
268- __attribute__ ((flatten, always_inline)) Ty &inc (int UpdateVal,
269- IdentTy *Ident) {
268+ [[gnu::flatten, gnu::always_inline]] Ty &inc (int UpdateVal, IdentTy *Ident) {
270269 return (lookup (/* IsReadonly */ false , Ident, /* ForceTeamState */ false ) +=
271270 UpdateVal);
272271 }
273272
274- __attribute__ ((flatten, always_inline)) Ty &set (Ty UpdateVal,
275- IdentTy *Ident) {
273+ [[gnu::flatten, gnu::always_inline]] Ty &set (Ty UpdateVal, IdentTy *Ident) {
276274 return (lookup (/* IsReadonly */ false , Ident, /* ForceTeamState */ false ) =
277275 UpdateVal);
278276 }
@@ -284,12 +282,12 @@ template <typename Ty, ValueKind Kind> struct Value {
284282// / a nice interface to lookup and update ICV values
285283// / we can declare in global scope.
286284template <typename Ty, ValueKind Kind> struct PtrValue {
287- __attribute__ (( flatten, always_inline)) operator Ty () {
285+ [[gnu:: flatten, gnu:: always_inline]] operator Ty () {
288286 return lookup (/* IsReadonly */ true , /* IdentTy */ nullptr ,
289287 /* ForceTeamState */ false );
290288 }
291289
292- __attribute__ (( flatten, always_inline)) PtrValue &operator =(const Ty Other) {
290+ [[gnu:: flatten, gnu:: always_inline]] PtrValue &operator =(const Ty Other) {
293291 set (Other);
294292 return *this ;
295293 }
0 commit comments