On Wed, May 13, 2015 at 03:41:11PM +0200, Marek Polacek wrote: > As discussed in the PR, match.pd happily folds 0 * whatever into 0. That > is undesirable from the C/C++ FE POV, since it can make us accept invalid > initializers. > > So fixed in match.pd -- I'd hope there's a better way to do this, but this > seems to work. There was some fallout, but nothing unexpected or surprising.
Will it handle cases 0 * (int) (1 / 0) etc., when perhaps the division by zero isn't immediately the operand of mult, but somewhere deeper? Also, can't the divisor be optimized into 0 only later on, so your code would still see !integer_zerop there and fold into 0? Perhaps the answer is that in both cases we'd have simplified those already into a division by zero. Jakub