diff options
author | Richard Biener <rguenther@suse.de> | 2020-08-27 14:21:33 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2020-09-01 11:52:10 +0200 |
commit | d6a05b494b4b714e996a5ca09c5a4a1c41dbd648 (patch) | |
tree | 0d9de018722a2f47b0fb13e01dd9ecc7439514a2 /gcc/cfgrtl.h | |
parent | a37b0cccf4965f13006d2928f57a71e46e341cf8 (diff) | |
download | gcc-d6a05b494b4b714e996a5ca09c5a4a1c41dbd648.zip gcc-d6a05b494b4b714e996a5ca09c5a4a1c41dbd648.tar.gz gcc-d6a05b494b4b714e996a5ca09c5a4a1c41dbd648.tar.bz2 |
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.
Diffstat (limited to 'gcc/cfgrtl.h')
-rw-r--r-- | gcc/cfgrtl.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/cfgrtl.h b/gcc/cfgrtl.h index ae03e82..ae62d6c 100644 --- a/gcc/cfgrtl.h +++ b/gcc/cfgrtl.h @@ -49,7 +49,8 @@ extern bool purge_all_dead_edges (void); extern bool fixup_abnormal_edges (void); extern rtx_insn *unlink_insn_chain (rtx_insn *, rtx_insn *); extern void relink_block_chain (bool); -extern rtx_insn *duplicate_insn_chain (rtx_insn *, rtx_insn *); +extern rtx_insn *duplicate_insn_chain (rtx_insn *, rtx_insn *, + class loop *, class copy_bb_data *); extern void cfg_layout_initialize (int); extern void cfg_layout_finalize (void); extern void break_superblocks (void); |