> 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
