On 10/01/17 10:40, Tamar Christina wrote: > Hi all, > > This patch adds the __artificial__ and __gnu_inline__ > attributes to the intrinsics in arm_neon.h so that > costs are associated to the user function during profiling > and during debugging the intrinsics are hidden in trace. > > A similar patch was already applied to Aarch64. > > The artificial attribute does not affect code generation. > The functions are also changed from static to being extern > in order for the __gnu_inline__ function to not treat the > intrinsics as standalone functions. > > No new tests for this since it would require a gdb test > but regression tests on arm-none-linux-gnueabi was performed. > > The attribute was added with the following bash script: > > #!/bin/bash > > # first apply to the ones in #define blocks and add extra \ at the end > sed -i -r 's/(__inline.+)(__attribute__\s*)\(\((.+)\)\)\s*\\/\1\\\n\2 \(\(\3, > __gnu_inline__,__artificial__\)\) \\/m' \ > gcc/config/arm/arm_neon.h > > # Then write all normal functions > sed -i -r 's/(__inline.+)(__attribute__\s*)\(\((.+)\)\)/\1\n\2 \(\(\3, > __gnu_inline__, __artificial__\)\)/m' \ > gcc/config/arm/arm_neon.h > > # Then correct any trailing whitespaces we might have introduced > sed -i 's/[ \t]*$//' \ > gcc/config/arm/arm_neon.h > > # And then finish up by correcting some attribute values which don't fit the > patterns above. > sed -i -r 's/(__attribute__\s+)\(\((__always_inline__)\)\)\s+\\/\1\(\(\2, > __gnu_inline__, __artificial__\)\) \\/m' \ > gcc/config/arm/arm_neon.h > > # Replace static definitions with extern > sed -i -r 's/(__extension__\s+)static(.+)/\1extern\2/m' \ > gcc/config/arm/arm_neon.h > > > Ok for trunk? > > Thanks, > Tamar > > gcc/ > 2017-01-10 Tamar Christina <tamar.christ...@arm.com> > > * config/arm/arm_neon.h: Add __artificial__ and gnu_inline > to all inlined functions, change static to extern. >
OK. R.