2018-03-02 Richard Biener <rguenther@suse.de>
commitc70bb059a8c919eba6323f28573e96aeffe06da9
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Mar 2018 07:45:41 +0000 (2 07:45 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Mar 2018 07:45:41 +0000 (2 07:45 +0000)
tree36a4a124b2366597bcf98578183f83f65fff309d
parent7c7883aa7e518ab8f3d1b6b30b19c3fd714edfe1
2018-03-02  Richard Biener  <rguenther@suse.de>

PR tree-optimization/84427
* tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
(bitmap_set_subtract_values): Rewrite to handle multiple
exprs per value.
(clean): Likewise.
(prune_clobbered_mems): Likewise.
(phi_translate): Take edge instead of pred/phiblock.
(phi_translate_1): Likewise.
(phi_translate_set): Likewise.  Insert all translated
exprs for a value into the set, keeping possibly multiple
expressions per value.
(compute_antic_aux): Adjust for phi_translate changes.
When intersecting union the expressions and prune those
not in the final value set, keeping possibly multiple
expressions per value.  Do not use value-insertion
for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
all expressions.  Add verification that the value-sets
only shrink during iteration.
(compute_partial_antic_aux): Adjust for the phi_translate changes.
(do_pre_regular_insertion): Likewise.
(do_pre_partial_partial_insertion): Likewise.

* gcc.dg/torture/pr84427.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@258124 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr84427.c [new file with mode: 0644]
gcc/tree-ssa-pre.c