rtl-optimization/96812 - remap dependence info on RTL loop unrolling
authorRichard Biener <rguenther@suse.de>
Thu, 27 Aug 2020 12:21:33 +0000 (14:21 +0200)
committerRichard Biener <rguenther@suse.de>
Tue, 1 Sep 2020 09:52:10 +0000 (11:52 +0200)
commitd6a05b494b4b714e996a5ca09c5a4a1c41dbd648
tree0d9de018722a2f47b0fb13e01dd9ecc7439514a2
parenta37b0cccf4965f13006d2928f57a71e46e341cf8
rtl-optimization/96812 - remap dependence info on RTL loop unrolling

This carries over the PR87609 fix also to RTL loop unrolling.  The
gcc.dg/torture/pr90328.c testcase otherwise is miscompiled with
the tree-ssa-address.c hunk (or alternatively with -fno-ivopts
on master).  I've tried to find the correct abstraction and
adjusted two other duplicate_insn_chain users for which I do not
have testcases.  There may be other insn-chain copying routines
that could be affected but hopefully most appropriately go through
CFG hooks.

2020-08-27  Richard Biener  <rguenther@suse.de>

PR rtl-optimization/96812
* tree-ssa-address.c (copy_ref_info): Also copy dependence info.
* cfgrtl.h (duplicate_insn_chain): Adjust prototype.
* cfgrtl.c (duplicate_insn_chain): Remap dependence info
if requested.
(cfg_layout_duplicate_bb): Make sure we remap dependence info.
* modulo-sched.c (duplicate_insns_of_cycles): Remap dependence
info.
(generate_prolog_epilog): Adjust.
* config/c6x/c6x.c (hwloop_optimize): Remap dependence info.
gcc/cfgrtl.c
gcc/cfgrtl.h
gcc/config/c6x/c6x.c
gcc/modulo-sched.c
gcc/tree-ssa-address.c