On Wed, May 9, 2018 at 1:23 PM, Peryt, Sebastian <sebastian.pe...@intel.com> wrote: > I have rebased this patch to the latest trunk and addressed comments. Also, > there was a test in changelog, > but not in the patch itself - this has been added. > > Is it ok for trunk and backport to GCC-8 after few days? > > gcc/ > > * common/config/i386/i386-common.c (OPTION_MASK_ISA_PTWRITE_SET, > OPTION_MASK_ISA_PTWRITE_UNSET): New. > (ix86_handle_option): Handle OPT_mptwrite. > * config/i386/cpuid.h (bit_PTWRITE): Add. > * config/i386/driver-i386.c (host_detect_local_cpu): Detect > PTWRITE CPUID. > * config/i386/i386-builtin.def (PTWRITE): Add PTWRITE. > * config/i386/i386-c.c (ix86_target_macros_internal): > Support __PTWRITE__. > * config/i386/i386.c (ix86_target_string): Add -mptwrite. > (ix86_valid_target_attribute_inner_p): Support ptwrite. > (ix86_init_mmx_sse_builtins): Add edges detection for ptwrites > generated by vartrace. > * config/i386/i386.h (TARGET_PTWRITE): Add. > (TARGET_PTWRITE_P): Add. > * config/i386/i386.md: Add ptwrite. > * config/i386/i386.opt: Add -mptwrite. > * config/i386/immintrin.h (target): > (_ptwrite64): Add. > (_ptwrite32): Add. > * doc/extend.texi: Document ptwrite builtins. > * doc/invoke.texi: Document -mptwrite. > > gcc/testsuite/ > > * gcc.target/i386/ptwrite-1.c: New test.
@@ -31325,7 +31329,21 @@ ix86_init_mmx_sse_builtins (void) continue; ftype = (enum ix86_builtin_func_type) d->flag; - def_builtin2 (d->mask, d->name, ftype, d->code); + decl = def_builtin2 (d->mask, d->name, ftype, d->code); + + /* Avoid edges for ptwrites generated by vartrace pass. */ + if (decl) + { + DECL_ATTRIBUTES (decl) = build_tree_list (get_identifier ("leaf"), + NULL_TREE); + TREE_NOTHROW (decl) = 1; + } + else + { + ix86_builtins_isa[(int)d->code].leaf_p = true; + ix86_builtins_isa[(int)d->code].nothrow_p = true; + } + Can you please explain what is the purpose of the above change? Uros.