| SKIP: FAILED |
| |
| #include <metal_stdlib> |
| using namespace metal; |
| struct modf_result_f32 { |
| float fract; |
| float whole; |
| }; |
| struct frexp_result_f32 { |
| float fract; |
| int exp; |
| }; |
| |
| void deref_modf() { |
| modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f}; |
| thread modf_result_f32* const p = a; |
| float fract = p.fract; |
| float whole = p.whole; |
| } |
| void no_deref_modf() { |
| modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f}; |
| thread modf_result_f32* const p = a; |
| float fract = p.fract; |
| float whole = p.whole; |
| } |
| void deref_frexp() { |
| frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1}; |
| thread frexp_result_f32* const p = a; |
| float fract = p.fract; |
| int exp = p.exp; |
| } |
| void no_deref_frexp() { |
| frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1}; |
| thread frexp_result_f32* const p = a; |
| float fract = p.fract; |
| int exp = p.exp; |
| } |
| kernel void tint_symbol() { |
| deref_modf(); |
| no_deref_modf(); |
| deref_frexp(); |
| no_deref_frexp(); |
| } |
| program_source:14:33: error: no viable conversion from 'modf_result_f32' to 'modf_result_f32 *const' |
| thread modf_result_f32* const p = a; |
| ^ ~ |
| program_source:15:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'? |
| float fract = p.fract; |
| ~^ |
| -> |
| program_source:16:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'? |
| float whole = p.whole; |
| ~^ |
| -> |
| program_source:20:33: error: no viable conversion from 'modf_result_f32' to 'modf_result_f32 *const' |
| thread modf_result_f32* const p = a; |
| ^ ~ |
| program_source:21:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'? |
| float fract = p.fract; |
| ~^ |
| -> |
| program_source:22:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'? |
| float whole = p.whole; |
| ~^ |
| -> |
| program_source:26:34: error: no viable conversion from 'frexp_result_f32' to 'frexp_result_f32 *const' |
| thread frexp_result_f32* const p = a; |
| ^ ~ |
| program_source:27:18: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'? |
| float fract = p.fract; |
| ~^ |
| -> |
| program_source:28:14: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'? |
| int exp = p.exp; |
| ~^ |
| -> |
| program_source:32:34: error: no viable conversion from 'frexp_result_f32' to 'frexp_result_f32 *const' |
| thread frexp_result_f32* const p = a; |
| ^ ~ |
| program_source:33:18: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'? |
| float fract = p.fract; |
| ~^ |
| -> |
| program_source:34:14: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'? |
| int exp = p.exp; |
| ~^ |
| -> |
| |