| SKIP: FAILED |
| |
| #include <metal_stdlib> |
| using namespace metal; |
| struct str { |
| float4 i; |
| }; |
| |
| threadgroup str S; |
| void func(threadgroup float4* const pointer) { |
| pointer = float4(0.0f); |
| } |
| kernel void tint_symbol(uint tint_local_index [[thread_index_in_threadgroup]]) { |
| if ((tint_local_index == 0u)) { |
| S = str{}; |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| func(S.i); |
| } |
| program_source:7:17: error: program scope variable must reside in constant address space |
| threadgroup str S; |
| ^ |
| program_source:9:11: error: cannot assign to variable 'pointer' with const-qualified type 'threadgroup float4 *const' |
| pointer = float4(0.0f); |
| ~~~~~~~ ^ |
| program_source:8:37: note: variable 'pointer' declared const here |
| void func(threadgroup float4* const pointer) { |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~ |
| program_source:12:25: warning: equality comparison with extraneous parentheses [-Wparentheses-equality] |
| if ((tint_local_index == 0u)) { |
| ~~~~~~~~~~~~~~~~~^~~~~ |
| program_source:12:25: note: remove extraneous parentheses around the comparison to silence this warning |
| if ((tint_local_index == 0u)) { |
| ~ ^ ~ |
| program_source:12:25: note: use '=' to turn this equality comparison into an assignment |
| if ((tint_local_index == 0u)) { |
| ^~ |
| = |
| |