On Tue, Sep 13, 2016 at 01:15:39PM +0100, Tamar Christina wrote:
> On 05/09/16 22:37, Andrew Pinski wrote:
> >On Mon, Sep 5, 2016 at 4:53 AM, Tamar Christina <tamar.christ...@arm.com>
> >>Hi all,
> >>This patch adds __artificial__ attribute to the intrinsics
> >>in arm_neon.h so that costs are associated to the user
> >>function during profiling and during the intrinsics are
> >>are hidden in trace.
> >>The attribute does not affect code generation.
> >>No new tests for this since it would require a gdb test
> >>but regression tests on aarch64-none-elf was performed.
> >I think this is obvious. Note I would change it one more step to be:
> >__extension__ extern__inline TYPE
> >__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
> >The main reason is because in C++98 (and I can't remember if C++11),
> >template are not supposed to consider a static function being a
> >candidate (though GCC does not get it right is no reason why not to
> >change it).
> Hi Andrew,
> I've updated the script and patch. New script is:
> # 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' \
> # Then write all normal functions
> sed -i -r 's/(__inline.+)(__attribute__\s*)\(\((.+)\)\)/\1\n\2
> \(\(\3, __gnu_inline__, __artificial__\)\)/m' \
> # Then correct any trailing whitespaces we might have introduced
> sed -i 's/[ \t]*$//' \
> # And then finish up by correcting some attribute values which don't
> fit the patterns above.
> sed -i -r
> __gnu_inline__, __artificial__\)\) \\/m' \
> # Replace static definitions with extern
> sed -i -r 's/(__extension__\s+)static(.+)/\1extern\2/m' \
> I've also update the patch.
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.