On Wed, Jun 08, 2016 at 01:43:56PM -0400, Jason Merrill wrote: > > A few random ideas I was considering: > > * restrict it to GIMPLE, so we can't have a regression in the front-ends. > > * fold x/0 to 0 with TREE_OVERFLOW set, to tell the front-end that something > > is going on. > > * fold to (x/y,0) or (x/y,1) so the division by 0 is still there, but C++11 > > constexpr might give a strange message about it, and folding might not be > > idempotent. > > Any of these would avoid the constexpr regression, though the second > would make the diagnostic worse. Or the front end could copy > constexpr function bodies before folding.
Or, both cxx_eval_binary_expression and cp_fold would need to not fold if the divisor is integer_zerop. Jakub