------- Additional Comments From law at redhat dot com 2004-11-25 00:22 ------- Subject: Re: [3.4/4.0 Regression] missing jump threading because of type changes
On Wed, 2004-11-24 at 22:38 +0000, steven at gcc dot gnu dot org wrote: > ------- Additional Comments From steven at gcc dot gnu dot org 2004-11-24 > 22:38 ------- > I don't think this is "minor". We have many places where we have > predicates returning "bool", and this PR suggests that we can never > thread on their results because of casts. > > Adding Jeff, this may be a new prey for him after he's done with > Bug 15524 ;-) There are a number of ways we can attack this. I don't know if any are appropriate for 4.0 though. One approach is to go with the phi optimization rewrite which allows it to work with > 2 predecessors to the PHI block. Another would be to look at Kazu's work which (IIRC) tried to identify typecasts which were fed by PHIs with all constant arguments. It then removed the typecast and original PHI and installed a new PHI with a result of the proper type. A third would be to revamp the jump threading selection code. In the early days of the jump threading code we couldn't handle SSA graph updates if we threaded through a block with side effects. The new SSA graph update code handles that case, so the selection code shouldn't need to be so conservative anymore. I think ultimately we'll want to do all three. The question in my mind is which (if any) are suitable for gcc 4.0. jeff -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18576