| #include <metal_stdlib> |
| using namespace metal; |
| |
| void deref_const() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int b = (*p)[0]; |
| (*p)[0] = 42; |
| } |
| |
| void no_deref_const() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int b = (*p)[0]; |
| (*p)[0] = 42; |
| } |
| |
| void deref_let() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int const i = 0; |
| int b = (*p)[i]; |
| (*p)[0] = 42; |
| } |
| |
| void no_deref_let() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int const i = 0; |
| int b = (*p)[i]; |
| (*p)[0] = 42; |
| } |
| |
| void deref_var() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int i = 0; |
| int b = (*p)[i]; |
| (*p)[0] = 42; |
| } |
| |
| void no_deref_var() { |
| int3 a = 0; |
| thread int3* const p = (&a); |
| int const i = 0; |
| int b = (*p)[i]; |
| (*p)[0] = 42; |
| } |
| |
| kernel void tint_symbol() { |
| deref_const(); |
| no_deref_const(); |
| deref_let(); |
| no_deref_let(); |
| deref_var(); |
| no_deref_var(); |
| } |