On Tue, Sep 20, 2016 at 10:09:14AM +0100, James Greenhalgh wrote: > On Tue, Sep 13, 2016 at 01:15:39PM +0100, Tamar Christina wrote: >> > Thanks, I applied this following your script above, and committed it as > revision 240256, after tweaking one part of the script to replace a double > space after __attribute__ introduced by the second sed command.
This patch caused a few new failures for AArch64: Failures: gcc.target/aarch64/vect_int32x2x4_1.c gcc.target/aarch64/vdup_lane_2.c gcc.target/aarch64/vect_combine_zeroes_1.c Bisected to: Author: jgreenhalgh <jgreenhalgh@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue Sep 20 09:06:13 2016 +0000 [GCC][PATCH] Add __artificial__ attribute to Aarch64 NEON intrinsics Committed on behalf of Tamar Christina <tamar.christ...@arm.com>. gcc/ * config/aarch64/arm_neon.h: Add gnu_inline and artificial attributes to all inlined functions and make them extern. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240256 138bc75d-0d04-0410-961f-82ee72b054a4 Looking in to it, I see that the following intrinsics: vst2_s64 vst2_u64 vst2_f64 vst2_s8 vst3_s64 vst3_u64 vst3_f64 vst3_s8 vst4_s64 vst4_u64 vst4_f64 vst4_s8 Are getting inlined, but their body is output in the assembly. Looking in arm_neon.h, the reason seems clear: __extension__ extern __inline void vst2_s64 (int64_t * __a, int64x1x2_t val) { These intrinsics have always been missing __attribute__ ((__always_inline__)) and consequently were not updated by your script to have __gnu_inline__, and now they are marked extern - they miss GNU Inline semantics and keep their body after inlining. A patch adding the correct attributes to these intrisnics is preapproved. Thanks, James