Section 2.19.3 (List Item Privatization) of the OpenMP 5.0 standard does not apply to declarative directives, only to constructs. As such it's legal for a const-qualified function parameter to be marked as linear in a declare simd directive. I have confirmed this with the language committee.
Suggestions on a better approach are welcome -- I tried using DSAStack, but it didn't have a valid current directive when the restriction was checked.
Shouldn't you check that the _ZGV * name is generated?