> Assign hierarchical copyids on CFG and statement duplication for AutoFDO.
> Key each duplicated region from the first block/stmt with a location, and
> drop manual discriminator updates that copy_bbs now covers.
> This lets sample profiles tell copies of the same source line apart.
> 
> gcc/ChangeLog:
> 
>       * hierarchical_discriminator.cc (assign_discriminators_to_bb):
>       Handle RTL.
>       * cfghooks.h (struct copy_bb_data): Add skip_copyid.
>       * cfghooks.cc (copyid_location_from_bb): New.
>       (duplicate_block): Assign a fresh copyid unless suppressed.
>       (copy_bbs): Assign one shared copyid for the duplicated region.
>       * cfgloopmanip.h (DLTHE_RECORD_HIERARCHICAL_DISCRIMINATOR): Remove.
>       * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Remove
>       manual hierarchical discriminator assignment.
>       * gimple-loop-versioning.cc (loop_versioning::version_loop): Rely
>       on copy_bbs for copyids.
>       * tree-vect-loop-manip.cc (vect_do_peeling, vect_loop_versioning):
>       Likewise.
>       * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely, try_peel_loop):
>       Drop DLTHE_RECORD_HIERARCHICAL_DISCRIMINATOR.
>       * tree-vect-stmts.cc (hoist_defs_of_uses): Assign copyid to
>       gimple_copy clones.
>       * value-prof.cc (gimple_ic, gimple_stringop_fixed_value): Likewise.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gcc.dg/hierarchical-discriminator-ch.c: New test.
>       * gcc.dg/hierarchical-discriminator-rtl-unroll.c: Likewise.
>       * gcc.dg/hierarchical-discriminator-tracer.c: Likewise.
>       * gcc.dg/hierarchical-discriminator-unroll-jam.c: Likewise.
>       * gcc.dg/hierarchical-discriminator-unswitch.c: Likewise.
>       * gcc.dg/hierarchical-discriminator-loop-version.c: Require a
>       non-zero discriminator in the assembler scan.

OK,
thanks!
Honza

Reply via email to