------- Comment #6 from ubizjak at gmail dot com  2007-07-01 14:20 -------
In the tree-if-conv.c, there is a comment with the reference to PR23115, where
similar problems were addressed:

     4) If  pred B is dominated by pred A then use pred B's condition.
        See PR23115.  */

For attached testcase, we have following CFG:

                 bb3
                /   \
               /     \
              /       \
             V         V
            bb5 <---- bb4
              \       /
               \     /
                \   /
                 V V
                 bb6

with the conditions:

bb3:  C3 = (high_top_bit_11 != 0) 
bb4:  C4 = (d_7(D) <= high_19)

predicates for blocks are then:

bb4: !C3
bb5: C3 || !C3 & C4       [ = C3 || C4 ]

In bb6, we have:

  # quotient_3 = PHI <quotient_20(4), quotient_22(5)>

For some reason domiated_by_p() failed to detect that bb5 is dominated by bb4
and if-conversion simply assigns bb4 predicate (!C3) as the phi node condition.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31966

Reply via email to