https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106017
Bug ID: 106017 Summary: [PowerPC] No array-to-pointer conversion for MMA accumulator Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: nemanja.i.ibm at gmail dot com Target Milestone: --- It appears that the typical array to pointer conversion for function arguments does not work for MMA accumulator types. The user has to explicitly convert. Code: $ cat aa.c void takeacc(__vector_quad *); void passacc() { __vector_quad arr[4]; #ifdef _EXPLICIT takeacc(&arr[0]); #else takeacc(arr); #endif } Compile (success): $ gcc -mcpu=power10 -O3 aa.c -S -D_EXPLICIT && echo Success Success Compile (failure): $ gcc -mcpu=power10 -O3 aa.c -S && echo Success aa.c: In function 'passacc': aa.c:7:9: error: invalid conversion to type '* __vector_quad' 7 | takeacc(arr); | ^~~~~~~ Version: $ gcc --version gcc (GCC) 12.1.1 20220524 [releases/gcc-12 r12-8410-gf0a0aeec44] Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.