Hi,This patch documents issues with singleton vector types in the 4.9 AArch64 backend.
"On AArch64, the singleton vector types int64x1_t, uint64x1_t and float64x1_t exported by arm_neon.h are defined to be the same as their base types. This results in incorrect application of parameter passing rules to arguments of types int64x1_t and uint64x1_t, with respect to the AAPCS64 ABI specification. In addition, names of C++ functions with parameters of these types (including float64x1_t) are not mangled correctly. The current typedef declarations also unintentionally allow implicit casting between singleton vector types and their base types. These issues will be resolved in a near future release. See PR60825 for more information." OK for the wwwdocs repos? Thanks, Yufeng
Index: htdocs/gcc-4.9/changes.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-4.9/changes.html,v retrieving revision 1.69 diff -u -r1.69 changes.html --- htdocs/gcc-4.9/changes.html 29 Apr 2014 18:31:24 -0000 1.69 +++ htdocs/gcc-4.9/changes.html 1 May 2014 15:01:02 -0000 @@ -33,6 +33,20 @@ announcement</a>.</li> </ul> </li> + + <li><p>On AArch64, the singleton vector types <code>int64x1_t</code>, + <code>uint64x1_t</code> and <code>float64x1_t</code> exported by + <code>arm_neon.h</code> are defined to be the same as their base types. + This results in incorrect application of parameter passing rules to + arguments of types <code>int64x1_t</code> and <code>uint64x1_t</code>, + with respect to the AAPCS64 ABI specification. In addition, names of + C++ functions with parameters of these types (including + <code>float64x1_t</code>) are not mangled correctly. The current + <code>typedef</code> declarations also unintentionally allow implicit + casting between singleton vector types and their base types. These + issues will be resolved in a near future release. See + <a href="http://gcc.gnu.org/PR60825">PR60825</a> for more information. + </p></li> </ul> <p>