As discussed in https://github.com/llvm/llvm-project/issues/59714#issuecomment-1369518768, the folder for the remainder operations should be resillient when the rhs is 0.
The file IndexOps.cpp was already checking for multiple divisions by zero, so I tried to stick to the code style from those checks.
Fixes #59714.
As a side note, is it correct that remainder operations are never optimized away? I would expect that the following code
func.func @remu_test() -> index {
%c3 = index.constant 2
%c0 = index.constant 1
%0 = index.remu %c3, %c0
return %0 : index
}would be optimized to
func.func @remu_test() -> index {
return index.constant 0 : index
}when called with mlir-opt --convert-scf-to-openmp temp.mlir, but maybe I'm misunderstanding something.