From d752cfdb114944cf3c800fcc2e4d030ab392c52c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 23 Sep 2007 11:36:01 +0200 Subject: tree.h (block_nonartificial_location): New prototype. * tree.h (block_nonartificial_location): New prototype. * tree.c (block_nonartificial_location): New function. * dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial if artificial attribute is present on abstract inline decl. * c-common.c (handle_artificial_attribute): New function. (c_common_attribute_table): Add artificial attribute. * final.c (override_filename, override_linenum): New variables. (final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename and override_linenum if inside of a block inlined from __attribute__((__artificial__)) function. (notice_source_line): Honor override_filename and override_linenum. * doc/extend.texi: Document __attribute__((__artificial__)). * config/i386/emmintrin.h: Add __artificial__ attribute to all __always_inline__ functions. * config/i386/mmintrin.h: Likewise. * config/i386/tmmintrin.h: Likewise. * config/i386/mm3dnow.h: Likewise. * config/i386/pmmintrin.h: Likewise. * config/i386/ammintrin.h: Likewise. * config/i386/xmmintrin.h: Likewise. * config/i386/smmintrin.h: Likewise. * config/i386/bmmintrin.h: Likewise. * config/i386/mmintrin-common.h: Likewise. From-SVN: r128686 --- gcc/doc/extend.texi | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'gcc/doc') diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 9be3c56..de3a121 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -1802,8 +1802,8 @@ attributes are currently defined for functions on all targets: @code{no_instrument_function}, @code{section}, @code{constructor}, @code{destructor}, @code{used}, @code{unused}, @code{deprecated}, @code{weak}, @code{malloc}, @code{alias}, @code{warn_unused_result}, -@code{nonnull}, @code{gnu_inline} and @code{externally_visible}, -@code{hot}, @code{cold}. +@code{nonnull}, @code{gnu_inline}, @code{externally_visible}, +@code{hot}, @code{cold} and @code{artificial}. Several other attributes are defined for functions on particular target systems. Other attributes, including @code{section} are supported for variables declarations (@pxref{Variable Attributes}) and @@ -1925,6 +1925,14 @@ In C++, this attribute does not depend on @code{extern} in any way, but it still requires the @code{inline} keyword to enable its special behavior. +@cindex @code{artificial} function attribute +@item artificial +This attribute is useful for small inline wrappers which if possible +should appear during debugging as a unit, depending on the debug +info format it will either mean marking the function as artificial +or using the caller location for all instructions within the inlined +body. + @cindex @code{flatten} function attribute @item flatten Generally, inlining into a function is limited. For a function marked with -- cgit v1.1