DF usage in loop-invariant.c (PR46590)
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 4 Apr 2019 07:35:34 +0000 (07:35 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 4 Apr 2019 07:35:34 +0000 (07:35 +0000)
commit6541e97d4da7df25f948e544fc09271a91aee8f8
tree0204ba9afddd95196fbf6013eee38328ccb5850f
parent325d3f4642eb72812b4dbbd15968228d27f135a1
DF usage in loop-invariant.c (PR46590)

- df_live is already present at -O2, so we only need to add it and
  mark all blocks dirty for -O

- df_process_deferred_rescans should be enough to force a rescan of
  blocks affected by moving invariants, but calling it in find_defs
  means that we don't do any rescans for the final loop

2019-04-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR rtl-optimization/46590
* loop-invariant.c (find_defs): Move df_remove_problem and
df_process_deferred_rescans to move_invariants.
Move df_live_add_problem and df_live_set_all_dirty calls
to move_invariants.
(move_invariants): Likewise.
(move_loop_invariants): Likewise, making the df_live calls
conditional on -O.  Remove the problem again if we added it
locally.

From-SVN: r270142
gcc/ChangeLog
gcc/loop-invariant.c