This change allows additional msgArgs SSA values in cf.assert. The assert message is now a simple format string. E.g.:
cf.assert %condition, "found {}, expected {}"(%0, %1) : index, index
The runtime op verifier of memref.cast is extended such that it generates more descriptive runtime errors with full memref types. E.g.:
memref.cast: invalid cast from memref<5xf32, strided<[1], offset: 0> to memref<10xf32>
This change also adds a printStr helper function to the runtime library. puts can no longer be used because it automatically adds a new-line character. fputs cannot be used either because it requires an additional output stream argument, which is hard to produce in LLVMIR. (fputs does not add a new-line character.)
Depends On D138671
What are the formatting semantics for the provided arguments? Implementation defined?
Also, why not use an indexed placeholder approach?