At present, a lot of code contains main function bodies like "return failed(mlir::MlirOptMain(...);". This is unfortunate for two reasons: a) it uses ADL, which is maybe not what the free "failed" function was designed for; and b) it is a bit awkward to read, requring the reader to both understand the boolean nature of the value and the semantics of main's return value. (And it's also not portable, since 1 is not a portable success value.)
The replacement code, return mlir::AsMainReturnCode(mlir::MlirOptMain(...)) is a bit more self-explanatory.
The change applies the new function to a few internal uses of MlirOptMain, too.
Please fix :)