On Wed, Aug 12, 2015 at 7:23 AM, Richard Biener <rguent...@suse.de> wrote: > On Wed, 12 Aug 2015, Richard Biener wrote: > >> >> This brings FRE/PRE up to the same level as DOM in being able to >> remove redundant conditionals. It does so by inserting temporary >> conditional expressions proved to be true on single predecessor >> edges. >> >> I've had to do a lot of testcase adjustments, thus the patch is >> now re-bootstrapping / testing on x86_64-unknown-linux-gnu. > > I've applied with a slight change, trimming down the number of > equivalences recorded (basically only record anything off > conditions not already optimized to go either way). > > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. > > Richard. > > 2015-08-12 Richard Biener <rguent...@suse.de> > > * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Also canonicalize > comparison operand order and commutative ternary op operand order. > (sccvn_dom_walker::cond_stack): New state to track temporary > expressions. > (sccvn_dom_walker::after_dom_children): Remove tempoary expressions > no longer valid. > (sccvn_dom_walker::record_cond): Add a single temporary conditional > expression. > (sccvn_dom_walker::record_conds): Add a temporary conditional > expressions and all related expressions also true/false. > (sccvn_dom_walker::before_dom_children): Record temporary > expressions based on the controlling condition of a single > predecessor. When trying to simplify a conditional statement > lookup expressions we might have inserted earlier. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67241 H.J.