https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120247
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Perhaps __builtin_assoc_barrier should lower to NON_LVALUE_EXPR (PAREN_EXPR (expr)) or PAREN_EXPR (NON_LVALUE_EXPR (expr)) for C++? Of course, a big question is what the builtin should do for class types (if it shouldn't be an error). And for C++ it also means that __builtin_assoc_barrier can have dependent argument and only during instantiation we'd find out if it has supported/able type or not. Though, __builtin_assoc_barrier is parsed immediately to PAREN_EXPR. Perhaps we want some language flag on whether it is __builtin_assoc_barrier or the force_paren_expr created one?